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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL Execution Plan--执行计划中的Type列

發(fā)布時(shí)間:2024/8/26 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL Execution Plan--执行计划中的Type列 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在一次的優(yōu)化過程中,由于沒有關(guān)注執(zhí)行計(jì)劃中type列,僅看key列來查看"使用到的索引",導(dǎo)致優(yōu)化過程走了不少彎路。

以下面SQL為例:

SELECT wave_no, SUM(IF(picking_qty IS NULL, 0, picking_qty)) AS PICKED_QTY, SUM(IF(differ_qty IS NULL, 0, differ_qty)) AS PICKED_DIFFER_QTY, SUM(IF(relocate_qty IS NULL, 0, relocate_qty)) AS PICKED_RELOCATE_QTY FROM picking_locate_d WHERE yn = 0 AND wave_no IN ( 'BC76361213164811', 'BC76361213164810', ... 'BC76361213158692' ) AND org_No = '661' AND distribute_No = '763' AND warehouse_No = '612' GROUP BY wave_no;

走索引查找的執(zhí)行計(jì)劃為:

+----+-------------+------------------+------------+-------+---------------+-------------+---------+------+-------+----------+------------------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+------------------+------------+-------+---------------+-------------+---------+------+-------+----------+------------------------------------+ | 1 | SIMPLE | picking_locate_d | NULL | range | idx_wave_no | idx_wave_no | 153 | NULL | 14238 | 0.01 | Using index condition; Using where | +----+-------------+------------------+------------+-------+---------------+-------------+---------+------+-------+----------+------------------------------------+

?走索引掃描執(zhí)行計(jì)劃為:

+----+-------------+------------------+------------+-------+---------------+-------------+---------+------+----------+----------+-------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+------------------+------------+-------+---------------+-------------+---------+------+----------+----------+-------------+ | 1 | SIMPLE | picking_locate_d | NULL | index | idx_wave_no | idx_wave_no | 153 | NULL | 37660147 | 0.01 | Using where | +----+-------------+------------------+------------+-------+---------------+-------------+---------+------+----------+----------+-------------+

?

上面兩個(gè)執(zhí)行計(jì)劃都使用索引idx_wave_no,但:

第一個(gè)執(zhí)行計(jì)劃影響行數(shù)為14238,與IN查詢中的值數(shù)量相同,其執(zhí)行計(jì)劃type列值為range,表示index range scan。

第二個(gè)執(zhí)行計(jì)劃影響行數(shù)為37660147,與整表數(shù)據(jù)量相同,其執(zhí)行計(jì)劃type列為index,表示index scan。

?

哪為啥索引查找是index range scan呢?通過MySQL trace工具查看,其中輸出包含以下信息:

"chosen_range_access_summary": { "range_access_plan": {"type": "range_scan","index": "idx_wave_no","rows": 5,"ranges": ["BC76361213164810 <= wave_no <= BC76361213164810","BC76361213164811 <= wave_no <= BC76361213164811","BC76361213158692 <= wave_no <= BC76361213158692"] /* ranges */ } /* range_access_plan */, "rows_for_plan": 5, "cost_for_plan": 9.01, "chosen": true } /* chosen_range_access_summary */

其中查詢中WHERE子句:

wave_no IN ( 'BC76361213164811', 'BC76361213164810', 'BC76361213158692' )

由于idx_wave_no為非唯一索引,雖然是等值查詢,仍需要從第一個(gè)等于指定值的索引記錄開始掃描,直到第一個(gè)不等于指定值的索引記錄,因?yàn)楸环Q為范圍掃描(Range Scan) :

"ranges": ["BC76361213164810 <= wave_no <= BC76361213164810","BC76361213164811 <= wave_no <= BC76361213164811","BC76361213158692 <= wave_no <= BC76361213158692"]

IN子句中的3個(gè)值被轉(zhuǎn)換為3次INDEX RANGE SCAN。

?

對(duì)于全索引掃描(INDEX SCAN),通過MySQL trace工具查看,其中輸出包含以下信息:

"considered_execution_plans": [{"plan_prefix": [] /* plan_prefix */,"table": "`picking_locate_d`","best_access_path": {"considered_access_paths": [{"rows_to_scan": 37660147,"access_type": "scan","resulting_rows": 3.77e7,"cost": 9.58e6,"chosen": true,"use_tmp_table": true}] /* considered_access_paths */} /* best_access_path */,"condition_filtering_pct": 100,"rows_for_plan": 3.77e7,"cost_for_plan": 9.58e6,"sort_cost": 3.77e7,"new_cost_for_plan": 4.72e7,"chosen": true} ] /* considered_execution_plans */

其中access_type=scan表明操作為INDEX SCAN,rows_to_scan=37660147表名掃描整個(gè)索引上37660147行記錄。

?

通過DESC或EXPLAIN輸出的執(zhí)行計(jì)劃中,Type列的可選值分別對(duì)應(yīng):

all: 全表掃描 index: 索引全掃描 range: 索引范圍掃描,常用語<,<=,>=,between等操作 ref: 使用非唯一索引掃描或唯一索引前綴掃描,返回單條記錄,常出現(xiàn)在關(guān)聯(lián)查詢中 eq_ref: 類似ref,區(qū)別在于使用的是唯一索引,使用主鍵的關(guān)聯(lián)查詢 const/system: 單條記錄,系統(tǒng)會(huì)把匹配行中的其他列作為常數(shù)處理,如主鍵或唯一索引查詢 null: MySQL不訪問任何表或索引,直接返回結(jié)果

?

轉(zhuǎn)載于:https://www.cnblogs.com/gaogao67/p/10771113.html

總結(jié)

以上是生活随笔為你收集整理的MySQL Execution Plan--执行计划中的Type列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 自拍偷拍综合 | 午夜看看 | 国产69精品久久久久777 | 久久免费国产精品 | aaaa一级片 | 丰满女人又爽又紧又丰满 | 亚洲激情区| 国产污视频在线看 | 视频一区在线播放 | 九九精品在线观看视频 | 黄色aa大片 | 色视频一区二区 | 在线免费观看黄网站 | 肉色欧美久久久久久久免费看 | 伊人久久久久久久久久久 | 一区二区三区高清在线观看 | 国产aⅴ精品一区二区果冻 台湾性生生活1 | www.香蕉.com | 韩国美女被c | 国产高中女学生第一次 | 精品一区二区三区四区五区六区 | 男女猛烈无遮挡 | 91麻豆精品国产91久久久无需广告 | 超碰色偷偷 | 91亚洲一线产区二线产区 | 成人午夜天 | 亚洲精品麻豆 | 亚洲爱情岛论坛永久 | 男女午夜视频 | 日本丰满大乳奶做爰 | 欧美日韩在线观看一区二区三区 | 亚州欧美在线 | 丁香久久久| 国产三级在线播放 | 日韩不卡一区二区 | 天堂网av手机版 | 国产精品日韩精品 | 国产精品又黄又爽又色无遮挡 | 奶罩不戴乳罩邻居hd播放 | 爱爱一区二区三区 | 夜夜狠| 亚洲国产日韩在线 | 在线色网站 | 69精品久久久久久 | 亚洲国产日韩欧美在线观看 | 精品一区二区三区av | 九九人人 | 精品久久久久久无码人妻 | 看黄色一级片 | 国产春色| 中国女人av | 女人扒开腿让男人桶爽 | 黄色一级片久久 | 91极品身材尤物theporn | 亚洲另类欧美日韩 | 91黄色国产| 99自拍视频在线观看 | 欧美阿v | 日韩另类| 午夜久久久久久久久久 | 国产激情在线看 | 中文字幕一区二区三区精彩视频 | 成人a视频| 日韩欧美色图 | 一区二区福利视频 | 精品一区二区三区国产 | 18成人在线 | 麻豆最新网址 | 黄色av网站免费观看 | 欧美成人福利 | 美女视频三区 | 亚洲麻豆av | 精品麻豆视频 | 日本久久网站 | 伊人焦久影院 | 欧美精品一二 | 国产精品xxxx喷水欧美 | 久久波多野结衣 | 国产精品自偷自拍 | 国产高潮视频 | 久久精品女人毛片国产 | 亚洲免费视频网站 | 男人操女人网站 | 黄色免费网站观看 | 国产精品91视频 | 朋友人妻少妇精品系列 | 国产精品久久久久久白浆 | 777奇米四色 | 欧美成人黄 | 中国新婚夫妻性猛交 | 激情区| 色婷婷成人 | 日本丰满肉感bbwbbwbbw | 成人免费看片&#39; | 精品欧美一区二区久久久 | 美女一区| 国产欧美一区二区三区视频在线观看 | 色婷网| 日日撸夜夜操 |