六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

對于生產庫中遇到mysql的子查詢示例詳細說明

[摘要]使用過oracle或者其他關系數據庫的DBA或者開發人員都有這樣的經驗,在子查詢上都認為數據庫已經做過優化,能夠很好的選擇驅動表執行,然后在把該經驗移植到mysql數據庫上,但是不幸的是,mysql...
使用過oracle或者其他關系數據庫的DBA或者開發人員都有這樣的經驗,在子查詢上都認為數據庫已經做過優化,能夠很好的選擇驅動表執行,然后在把該經驗移植到mysql數據庫上,但是不幸的是,mysql在子查詢的處理上有可能會讓你大失所望,在我們的生產系統上就由于碰到了這個問題:

select  i_id, sum(i_sell) as i_sell
from table_data
where i_id in (select i_id from table_data where Gmt_create >= ‘2011-10-07 00:00:00’)
group by i_id;

(備注:sql的業務邏輯可以打個比方:先查詢出10-07號新賣出的100本書,然后在查詢這新賣出的100本書在全年的銷量情況)。

這條sql之所以出現的性能問題在于mysql優化器在處理子查詢的弱點,mysql優化器在處理子查詢的時候,會將將子查詢改寫。通常情況下,我們希望由內到外,先完成子查詢的結果,然后在用子查詢來驅動外查詢的表,完成查詢;但是mysql處理為將會先掃描外面表中的所有數據,每條數據將會傳到子查詢中與子查詢關聯,如果外表很大的話,那么性能上將會出現問題;

針對上面的查詢,由于table_data這張表的數據有70W的數據,同時子查詢中的數據較多,有大量是重復的,這樣就需要關聯近70W次,大量的關聯導致這條sql執行了幾個小時也沒有執行完成,所以我們需要改寫sql:

SELECT t2.i_id, SUM(t2.i_sell) AS sold
FROM (SELECT distinct i_id FROM table_data
WHERE gmt_create >= ‘2011-10-07 00:00:00’) t1,  table_data t2
WHERE t1.i_id = t2.i_id GROUP BY t2.i_id;

我們將子查詢改為了關聯,同時在子查詢中加上distinct,減少t1關聯t2的次數;

改造后,sql的執行時間降到100ms以內。

以上就是關于生產庫中遇到mysql的子查詢示例詳解的詳細內容,更多請關注php中文網其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。




主站蜘蛛池模板: 日本99视频 | 日韩三级在线免费观看 | 午夜小视频在线观看 | 日本天堂网址 | 日本色护士 | 天天色啪 | 日韩美女在线播放 | 在线视频 亚洲 | 欧洲一级片| 午夜影视体验区 | 欧美中文一区 | 在线观看h视频播放高清 | 欧美一区二区三区激情啪啪 | 日本精品久久久久久久 | 日本激情小视频 | 日本一在线中文字幕天堂 | 日韩免费在线观看 | 天干天干天啪啪夜爽爽色 | 永久毛片 | 青草草产国视频 | 一级做a爰视频免费观看2019 | 青青青国产成人久久111网站 | 亚洲欧美日韩成人网 | 日a在线 | 日本a视频在线 | 四虎免费在线播放 | 亚洲国产精品久久婷婷 | 亚洲 欧美 成人日韩 | 在线视频二区 | 日本大片a| 欧美一线高本道高清在线 | 亚洲 欧美 字幕 一区 在线 | 日韩特黄特色大片免费视频 | 色综合一本| 日韩欧美一区二区久久黑人 | 亚洲码专区 | 日韩欧美理论片 | 亚洲一区二区三区在线免费观看 | 亚洲精品乱码久久久久久麻豆 | 日韩三级在线观看 | 色综合久久六月婷婷中文字幕 |