mysql執(zhí)行計(jì)劃詳細(xì)解讀

下文主要給大家?guī)?lái)MySQL執(zhí)行計(jì)劃詳細(xì)解讀,希望mysql執(zhí)行計(jì)劃詳細(xì)解讀能夠帶給大家實(shí)際用處,這也是我編輯這篇文章的主要目的。好了,廢話不多說(shuō),大家直接看下文吧。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、江孜網(wǎng)站維護(hù)、網(wǎng)站推廣。

繼續(xù)上次沒(méi)有寫完的執(zhí)行計(jì)劃部分
6.possible_keys可能使用到的索引,這個(gè)的理解呢, 表示查詢時(shí)可能使用的索引。只是可能用到,但是并不一定用到。如果是空的,表明肯定是沒(méi)有相關(guān)的索引。但是如果有值,也不一定能夠用到。
7.key實(shí)際使用的索引。
6,7的話一起來(lái)看下面的例子:

mysql執(zhí)行計(jì)劃詳細(xì)解讀

mysql> explain select  * from `order` where seller_id = 19;
+----+-------------+-------+------------+------+------------------+------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys    | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+-------+------------+------+------------------+------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | order | NULL       | ALL  | 商家,seller_id   | NULL | NULL    | NULL | 2197 |   100.00 | Using where |
+----+-------------+-------+------------+------+------------------+------+---------+------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)

mysql> explain select  * from `order` where customer_id = 55029;
+----+-------------+-------+------------+------+---------------+-------------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key         | key_len | ref   | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+-------------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | order | NULL       | ref  | customer_id   | customer_id | 8       | const |   10 |   100.00 | NULL  |
+----+-------------+-------+------------+------+---------------+-------------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)

對(duì)于第一條sql,這里的possible_keys的結(jié)果為有可能走seller_id上的索引,但是實(shí)際的key為NULL。之前也說(shuō)過(guò)了,因?yàn)橹挥幸粋€(gè)賣家,雖然有索引,但是Innodb選擇了全表掃描,這是基于CBO進(jìn)行選擇的結(jié)果。我們現(xiàn)在刪除一下seller_id上的索引看看是怎么樣的。

mysql> explain select  * from `order` where seller_id = 19;
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | order | NULL       | ALL  | 商家          | NULL | NULL    | NULL | 2197 |   100.00 | Using where |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)

可見已經(jīng)走的是全表掃表了。

第二條sql這里的possible_keys的結(jié)果為seller_id,實(shí)際上也是走的seller_id,說(shuō)明索引生效了。

8.key_len使用到索引字段的長(zhǎng)度
注意:key_len是通過(guò)定義得到的,表示索引字段的最大可能長(zhǎng)度,并非實(shí)際使用長(zhǎng)度。
曾經(jīng)踩過(guò)一個(gè)坑,因?yàn)閯?chuàng)建索引的時(shí)候,并沒(méi)有主動(dòng)定義索引長(zhǎng)度,結(jié)果長(zhǎng)度為20的字段索引長(zhǎng)度只有4。然后索引不生效導(dǎo)致數(shù)據(jù)庫(kù)雪崩。所以平時(shí)最好養(yǎng)成一個(gè)定義索引時(shí)記得加長(zhǎng)度的習(xí)慣。

9.ref顯示哪個(gè)字段或常數(shù)與key一起被使用
如果是使用的常數(shù)等值查詢,這里會(huì)顯示const
如果是連接查詢,被驅(qū)動(dòng)表的執(zhí)行計(jì)劃這里會(huì)顯示驅(qū)動(dòng)表的關(guān)聯(lián)字段
如果是條件使用了表達(dá)式或者函數(shù),或者條件列發(fā)生了內(nèi)部隱式轉(zhuǎn)換,這里可能顯示為func
如果沒(méi)有用索引的話,這里會(huì)顯示NULL

10.row掃描行數(shù)
這個(gè)數(shù)表示mysql要遍歷多少數(shù)據(jù)才能找到,是根據(jù)統(tǒng)計(jì)得來(lái)的,可能并不是十分精準(zhǔn)

11.filtered過(guò)濾百分比
針對(duì)條件的記錄數(shù)的百分比所做的一個(gè)估算(這里是一個(gè)悲觀估算,即最大值),即mysql將要過(guò)濾行數(shù)的百分比。

12.Extra額外信息
Using index:表示覆蓋索引,只查詢索引值就滿足sql的要求了。

mysql> explain select customer_id from `order` where customer_id = 55029;
+----+-------------+-------+------------+------+---------------+-------------+---------+-------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key         | key_len | ref   | rows | filtered | Extra       |
+----+-------------+-------+------------+------+---------------+-------------+---------+-------+------+----------+-------------+
|  1 | SIMPLE      | order | NULL       | ref  | customer_id   | customer_id | 8       | const |   10 |   100.00 | Using index |
+----+-------------+-------+------------+------+---------------+-------------+---------+-------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)

對(duì)于以上關(guān)于mysql執(zhí)行計(jì)劃詳細(xì)解讀,大家是不是覺得非常有幫助。如果需要了解更多內(nèi)容,請(qǐng)繼續(xù)關(guān)注我們的行業(yè)資訊,相信你會(huì)喜歡上這些內(nèi)容的。

本文題目:mysql執(zhí)行計(jì)劃詳細(xì)解讀
新聞來(lái)源:http://muchs.cn/article28/pphcjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、做網(wǎng)站、搜索引擎優(yōu)化、定制網(wǎng)站、網(wǎng)站營(yíng)銷、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)