亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > 文庫 > 正文

一個left join SQL 簡單優化分析

2024-09-07 22:12:42
字體:
來源:轉載
供稿:網友
        有個關聯查詢的sql,需要2秒多,于是進行查看一番:
 
       SELECT
a.id,
a.brand_id,
a.series_id,
a.product_id,
a.material_id,
a.custom_category_id,
a.price,
a.product_url,
a.organ_id,
.....
FROM
pm_brand_xxxx a
LEFT JOIN pm_brand_yyyyy d ON a.series_id = d.id
WHERE
a.is_delete = 0
AND d.is_delete = 0
AND a.organ_id = 'Cxxx'
AND a.brand_id = 6491603
AND d.brand_id = 6491603
AND a.model_flag = 14;
mysql> show profile for query 4;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000072 |
| checking permissions | 0.000002 |
| checking permissions | 0.000002 |
| Opening tables       | 0.000011 |
| init                 | 0.000026 |
| System lock          | 0.000007 |
| optimizing           | 0.000016 |
| statistics           | 0.000142 |
| preparing            | 0.000018 |
| executing            | 0.000002 |
| Sending data         | 2.281192 |<<<<<<<執行的主要時間消耗
| end                  | 0.000007 |
| query end            | 0.000011 |
| closing tables       | 0.000011 |
| freeing items        | 0.000030 |
| logging slow query   | 0.000003 |
| logging slow query   | 0.000102 |
| cleaning up          | 0.000022 |
+----------------------+----------+
+----+-------------+-------+------------+-------------+---------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+---------+-------+-------+----------+------------------------------------------------------------------------------------------------------------------------------------------------+
| id | select_type | table | partitions | type        | possible_keys                                                                                                 | key                                                                       | key_len | ref   | rows  | filtered | Extra                                                                                                                                          |
+----+-------------+-------+------------+-------------+---------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+---------+-------+-------+----------+------------------------------------------------------------------------------------------------------------------------------------------------+
|  1 | SIMPLE      | d     | NULL       | ref         | PRIMARY,idx_pm_yyyy_bid                                                                                        | idx_pm_yyyyy_bid                                                        | 9       | const |     1 |    10.00 | Using where                                                                                                                                    |
|  1 | SIMPLE      | a     | NULL       | index_merge | idx_pm_xxxx_sid,idx_pm_xxx_bid,idx_pm_brand_xxxx_organ                                                         | idx_pm_xxx_organ,idx_pm_brand_xxxx_bid                                   | 99,9    | NULL  | 11314 |     0.04 | Using intersect(idx_pm_xxxxx_organ,idx_pm_xxxx_bid); Using where; Using join buffer (Block Nested Loop)                                        |
+----+-------------+-------+------------+-------------+---------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+---------+-------+-------+----------+------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set, 1 warning (0.00 sec)
      從執行計劃來看,d表是做了驅動表,a做了被驅動表
 
      d表 type = ref ,使用非唯一性索引或者唯一索引的前綴掃描,返回匹配某個單獨值的記錄行,這里使用了索引idx_pm_yyyyy_bid,該索引正是brand_id上的索引,
 
      即是說,在和a表的關聯中d先通過brand_id來查找記錄行,再通過相應記錄的id去和a表的series_id做匹配。
 
      我查看相應的記錄數,發現a表145萬的大表,d表是4075的小表。
 
a表
 
mysql> select count(*) from pm_xxxxxx;
 
+----------+
 
| count(*) |
 
+----------+
 
|  1459777 |
 
+----------+
 
1 row in set (0.27 sec)
 
d表:
 
mysql> select count(*) from pm_yyyyyy;
 
+----------+
 
| count(*) |
 
+----------+
 
|     4075 |
 
+----------+
 
1 row in set (0.00 sec)
 
而 a表是type=index_merge 索引合并,這里走了idx_pm_xxx_organ(organ_id),idx_pm_brand_xxxx_bid(brand_id) ,extra 是
 
Using intersect(idx_pm_xxxxx_organ,idx_pm_xxxx_bid); Using where; Using join buffer (Block Nested Loop)
 
Using intersect正說明了這里使用了(idx_pm_xxxxx_organ,idx_pm_xxxx_bid)的交集
 
Using where 是用model_flag等這些其他條件的過濾
 
Using join buffer (Block Nested Loop) 說明使用BNL的算法進行匹配
 
 BNL 算法是將外層循環的行/結果集(驅動表)存入join buffer, 內層循環的每一行與整個buffer中的記錄做比較,從而減少內層循環的次數.
 
舉例來說,外層循環的結果集是100行,使用NLJ 算法需要掃描內部表100次,如果使用BNL算法,先把對Outer Loop表(外部表)每次讀取的10行記錄放到join buffer,然后在InnerLoop表(內部表)中直接匹配這10行數據,內存循環就可以一次與這10行進行比較, 這樣只需要比較10次,對內部表的掃描減少了9/10。所以BNL算法就能夠顯著減少內層循環表掃描的次數.
 
在這里就是d表中取得結果集分批放入buffer中與a表進行匹配。
 
而這個語句無論如何都要2秒中,也在我們的認識中小表驅動大表并沒錯,我的猜想應該就是在進行BNL時消耗了時間,表現到過程中就是 Sending data 的時間消耗增多。
 
吐槽的是mysql中貌似沒有什么辦法來多方面看查詢消耗了。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人免费大片黄在线播放| 亚洲日韩第一页| 亚洲国产中文字幕在线观看| 欧美激情一二三| 亚洲一区av在线播放| 日韩久久精品电影| 国产成人综合av| 亚洲午夜久久久久久久| 岛国精品视频在线播放| www.久久草.com| 九九久久精品一区| 日韩在线欧美在线国产在线| 亚洲精品久久久久久久久久久久| 黑人巨大精品欧美一区二区免费| 久久久女人电视剧免费播放下载| 国产日韩在线免费| 日韩在线观看免费全| 91久久综合亚洲鲁鲁五月天| 精品国产乱码久久久久久天美| 欧美在线性爱视频| 国产精品久久久久高潮| 久久久亚洲国产| 成人www视频在线观看| 日韩一区二区在线视频| 国产精品99久久久久久人| 欧美精品在线免费播放| 91福利视频网| 久久久久久久久久亚洲| 精品欧美激情精品一区| 中文字幕国产日韩| 欧美高清在线播放| 久久精品国产69国产精品亚洲| 国产精品视频大全| 亚洲综合中文字幕68页| 欧美日韩午夜剧场| 国产日韩亚洲欧美| 欧美最近摘花xxxx摘花| 欧美性极品少妇精品网站| 国产精品影片在线观看| 国产中文日韩欧美| 51色欧美片视频在线观看| 久久人人爽人人爽人人片av高清| 欧洲成人免费aa| 一区二区中文字幕| 亚洲人成在线一二| 欧美成人精品xxx| 在线成人免费网站| 国产婷婷色综合av蜜臀av| 精品国产电影一区| 亚洲欧美在线一区二区| 55夜色66夜色国产精品视频| 久久久精品免费| 亚洲男人天堂手机在线| 中文字幕亚洲综合久久筱田步美| 中文字幕少妇一区二区三区| 国产一区二区三区直播精品电影| 尤物九九久久国产精品的分类| 久久精品国产99国产精品澳门| 国产精品一久久香蕉国产线看观看| 亚洲成色999久久网站| 欧美一级高清免费播放| 6080yy精品一区二区三区| 欧美一二三视频| 欧美日韩美女视频| 中文字幕在线日韩| 日韩女优在线播放| 国产精品视频99| 国产99在线|中文| 国产精品久久久亚洲| 国产伊人精品在线| 国产精品自在线| 亚洲视频在线观看| 亚洲男人天堂视频| 欧美电影电视剧在线观看| 亚洲男人的天堂在线播放| 亚洲aⅴ男人的天堂在线观看| 久久久久亚洲精品成人网小说| 亚洲精品欧美日韩| 91美女高潮出水| 97香蕉久久超级碰碰高清版| 国产在线精品成人一区二区三区| 91在线高清免费观看| 在线日韩欧美视频| 亚洲国产成人一区| 色综合天天狠天天透天天伊人| 久久久噜噜噜久噜久久| 国产精品永久免费观看| 国产成人在线视频| 久久精品国产一区二区三区| 亚洲欧美日韩第一区| 亚洲男人天天操| 日本精品久久久久影院| 国语自产精品视频在线看抢先版图片| 亚洲iv一区二区三区| 国产精品视频久久| 午夜精品国产精品大乳美女| 美女扒开尿口让男人操亚洲视频网站| 欧美激情视频网站| 欧美日韩激情小视频| 日韩免费观看在线观看| 国产精品视频xxxx| 国产精品成人在线| 尤物tv国产一区| 精品一区二区三区三区| 欧美在线视频一二三| 久久成人综合视频| 亚洲黄在线观看| 精品福利在线看| 日韩在线一区二区三区免费视频| 亚洲天堂成人在线| 91日韩在线播放| 国产精品国产福利国产秒拍| 久久中文字幕在线视频| 亚洲午夜精品久久久久久久久久久久| 日韩中文字幕国产| 色av中文字幕一区| 久久人人爽人人爽爽久久| 精品国产户外野外| 日本道色综合久久影院| 日韩精品中文字| 亚洲性视频网站| 日韩有码片在线观看| 国产精品一区二区电影| 亚洲成年人在线播放| 国产成人精品免高潮费视频| 国产精品露脸av在线| 久久精品男人天堂| 国产精品日韩欧美| 国产91精品久| 亚洲高清一区二| 欧美性生交大片免网| 国产精品男人的天堂| 青草成人免费视频| 欧美激情精品久久久久久变态| 欧美日韩亚洲网| 欧美综合国产精品久久丁香| 欧美成人激情视频| 国产精品国产亚洲伊人久久| 国产精品视频公开费视频| 久久久免费观看视频| 57pao国产成人免费| 亚洲乱码av中文一区二区| 在线免费观看羞羞视频一区二区| 亚洲最新中文字幕| 动漫精品一区二区| 国模极品一区二区三区| 久久成人18免费网站| 欧美最猛性xxxxx亚洲精品| 久久精品视频99| 成人黄色免费在线观看| 国产成人精品久久亚洲高清不卡| 热re99久久精品国产66热| 久久精品91久久香蕉加勒比| 欧美国产亚洲精品久久久8v| 亚洲最大成人免费视频| 成人激情视频免费在线| 国产美女精品免费电影| 国产亚洲欧美aaaa| 日韩激情在线视频| 久久久国产视频| 日韩福利视频在线观看| 亚洲天堂av在线播放| 亚洲小视频在线| 在线不卡国产精品|