日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

子查询更新操作的坑

發(fā)布時(shí)間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 子查询更新操作的坑 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

子查詢我相信大部分人都寫過,但是昨天遇到一個(gè)比較坑的問題,由于有較好的備份,很短時(shí)間就恢復(fù)了誤操作數(shù)據(jù),但是這個(gè)問題值得分享。
首先建立如下測試表:
CREATE TABLE course (
student_id INT(11),
course VARCHAR(20)
);
INSERT INTO course VALUES ('1', '測試1');
INSERT INTO course VALUES ('2', '測試2');
INSERT INTO course VALUES ('3', '測試3');

CREATE TABLE student (
id INT(11),
name VARCHAR(20)
) ;
INSERT INTO student VALUES ('1', 'jiate');
INSERT INTO student VALUES ('2', 'haoshen');
INSERT INTO student VALUES ('3', 'leishen');
INSERT INTO student VALUES ('4', 'tetui');

現(xiàn)在我們執(zhí)行如下查詢操作:
SELECT FROM student WHERE id IN (SELECT id FROM course)

這個(gè)結(jié)果很明顯,多了一條。而在昨天,我們開發(fā)寫的是個(gè)update 操作,也是就:update student set name='特腿' where id in (select id from course) 本來更新1000條的數(shù)據(jù),開發(fā)直接誤更新了40萬條。
仔細(xì)排查后,發(fā)現(xiàn)剛才兩條sql發(fā)現(xiàn) course 中根本就不存在id列,那么剛才那兩條sql為啥沒有拋出id報(bào)錯(cuò),而是直接全表匹配了?
我們 desc extended 看看優(yōu)化器究竟干了什么?
DESC EXTENDED SELECT FROM student WHERE id IN (SELECT id FROM course)

SHOW WARNINGS


第一行1276 大意是說第二個(gè)查詢中的 id 列在第一個(gè)表中被解析到
第二行就是解析器解析后的sql,我們貼出來看看
SELECT
yhtest.student.id AS id,
yhtest.student.name AS name
FROM
yhtest.student semi
JOIN (yhtest.course)
WHERE (
yhtest.student.id = yhtest.student.id
)

也就是說我們這個(gè)子查詢中的id 列被解析為了主表的id 列,這樣,where 條件是一個(gè)恒成立的條件,所以導(dǎo)致我們的查詢過結(jié)果是a表的全表結(jié)果,而這也是這樣的查詢不拋錯(cuò)的原因。
子查詢中的字段,首先會(huì)在子查詢中查找,1)如果子查詢中沒該字段,則會(huì)去外層主表查找,如果能找到,也不會(huì)拋錯(cuò)! 2)如果子查詢和主表中都沒有該字段,則會(huì)拋錯(cuò)。
這其實(shí)是一個(gè)比較不理想的結(jié)果,如果我們無意中錯(cuò)誤是update操作,那么這個(gè)結(jié)果太糟糕。
這個(gè)我們提了兩個(gè)醒:
1)做數(shù)據(jù)庫操作之前,最好都備份
2)平時(shí)寫sql的時(shí)候,子查詢盡量都寫成表關(guān)聯(lián)的形式,表關(guān)聯(lián)形式,如果出現(xiàn)這種錯(cuò)誤,會(huì)直接拋出錯(cuò)誤。子查詢形式,雖然好懂,一目了然,但是性能一般不大好,再一個(gè),如果掉進(jìn)了以上這種誤更新坑中......
3)在不同版本的數(shù)據(jù)庫對(duì)于子查詢的優(yōu)化操作也是不盡相同,性能差異在不同版本之間還是比較明顯的。

轉(zhuǎn)載于:https://blog.51cto.com/11286233/2059003

總結(jié)

以上是生活随笔為你收集整理的子查询更新操作的坑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区二区三区高清 | 婷婷四房综合激情五月 | 日本91av | 免费吸乳羞羞网站视频 | 韩国日本欧美一区 | 色性网 | 欧美一区二区黄片 | 亚洲视频在线观看一区 | 调教驯服丰满美艳麻麻在线视频 | 成 人 黄 色 片 在线播放 | 精品亚洲一区二区三区四区五区高 | 久久11| 精品午夜视频 | 在线日韩视频 | 午夜在线观看影院 | 亚洲欧洲中文 | 国产永久在线 | 日韩一二三级 | 国产精品久久久久久久裸模 | 浴室里强摁做开腿呻吟男男 | 亚洲av无码潮喷在线观看 | 综合影院 | 成人黄色电影网址 | 97精品一区二区 | 最新中文字幕第一页 | 久色亚洲| 开心色站 | 精品一区二区在线视频 | 亚洲专区第一页 | 成年人在线免费 | 看毛片的网站 | 国产黄大片在线观看画质优化 | 午夜免费观看视频 | 国产成人午夜精品无码区久久 | 国产精品国产av | 高清国产一区二区三区四区五区 | 男女搞网站| 国产99久久久欧美黑人 | 最近中文字幕mv | 国产一区在线不卡 | 国产精品久久国产愉拍 | 成人网免费 | 打屁股视频网站 | 久久久久久久久久久久久久免费看 | av资源站| 超碰日韩在线 | 久草免费在线观看视频 | 亚洲好看站 | 亚洲精品中文字幕乱码三区 | 久久精品无码一区二区三区免费 | 黄色国产毛片 | 国产无遮挡又黄又爽免费视频 | 天堂av2018| 亚洲精品成人片在线观看精品字幕 | 国产伦理一区 | 香蕉av网 | 大帝av| 在线www | 国产精品视频免费播放 | 美女高潮视频在线观看 | 女人扒开腿免费视频app | 超碰国产97 | 黄色一级片毛片 | 毛片视频免费观看 | 国产黄色在线看 | 人妻人人澡人人添人人爽 | 麻豆国产av超爽剧情系列 | 在线污视频 | jizz色| 另类性姿势bbwbbw | 亚洲AV蜜桃永久无码精品性色 | 午夜成年人 | 巨乳美女动漫 | 国产精品啪 | 福利社91 | 香蕉av一区二区 | 80日本xxxxxxxxx96 亚洲国产精品视频在线 | 亚洲二区在线观看 | 伊人网中文字幕 | 四虎成人精品在永久免费 | 久久久999国产精品 天堂av中文在线 | 99视频在线观看免费 | 国产男女自拍 | jizzjizzjizz国产 | 国产精品一区一区三区 | 中国精品毛片 | 日韩欧美性视频 | 热久久最新网址 | 91视频免费在观看 | 欧美成人免费一级人片100 | 麻豆91在线 | 久久avav | 日韩一区二区在线播放 | 午夜精品福利电影 | 亚洲国产激情 | 色综合天天综合综合国产 | 国产精品丝袜 | 午夜888| 看特级毛片 |