mysql中執(zhí)行計劃索引的示例分析

小編給大家分享一下MySQL中執(zhí)行計劃索引的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站主要從事網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)沈北新,十余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

首先執(zhí)行計劃包含的信息:

id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows, filtered, Extra

id

select 查詢的序列號,包含一組數(shù)字,表示查詢中執(zhí)行select子句或操作表的順序 

存在三種情況:

a)  id相同,表示表(table字段)執(zhí)行順序從上到上

b)  id不同,如果是子查詢,id越大表執(zhí)行的優(yōu)先級越高

c)  id有相同也有不同,id相同,可認為是同一組,從上至下順序執(zhí)行,所有組中id越大執(zhí)行優(yōu)先級越高

select_type

主要有六種 

SIMPLE              簡單查詢,不包括自查詢及union

PRIMAY              查詢中包含任何復(fù)雜的子部分的最外層查詢的標記

SUBQUERY       在select或where子句列表中包含自查詢

DERIVED           在from列表中包括的子查詢標記為derived(衍生)mysql遞歸查詢這些子查詢并放在臨時表里

UNION               如果第二個select出現(xiàn)在union之后則標記為union,

                            如果union包含在from子句的子查詢中,外層的select標記為derived

UNION RESULT union結(jié)果的合并

table

對應(yīng)的表

type

訪問類型 

效率 system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>ALL

主要使用到的:system>const>eq_ref>ref>range>index>ALL 

system  表只有一行記錄(系統(tǒng)表)

const    索引常量

eq_ref  唯一性索引掃描

ref        非唯一性索引掃描

range  范圍索引掃描 (索引列使用 between in等范圍限定) 

index  全索引掃描 

ALL    全表掃描

possible_keys

查詢涉及到的字段上存在的索引一個或多個(可能用到的,但不一定會使用)

keys

實際使用的索引 

key_len

索引使用的字節(jié)數(shù),可通過該列計算查詢中使用索引的長度,同樣查詢結(jié)果條件下(不損失精度的條件下),長度越小越好

顯示的值為索引的最大可能長度,非實際長度,即key_len通過表定義計算所得非表內(nèi)檢索值

ref

顯示索引用到的列(或用到的是常量) 例 db.table.col ,const

rows

根據(jù)表統(tǒng)計信息及索引選用情況,大致估算出找到所需的記錄需要讀取的行數(shù)

Extra

其他信息

1、Using filesort  

使用外部的索引排序(文件排序),而不是按照索引的排序進行讀取 

例如使用復(fù)合索引的表,查詢排序時只使用了復(fù)合索引的其中一列,可能會造成文件排序。需盡量避免的情況

2、Using temporary  

使用了臨時表保存中間結(jié)果,常見于order by 及group by 

消耗資源,需避免的情況

order by 及group by 語句中使用覆蓋索引

3、Using index

使用的覆蓋索引,避免訪問表的數(shù)據(jù)行 

同時出現(xiàn)using where,表示索引用來查詢索引鍵值的查找(如查詢結(jié)果中的列被索引列覆蓋)

如果沒有出現(xiàn)using where,表示索引直接用來讀取數(shù)據(jù),不執(zhí)行查找動作

*覆蓋索引(Covering index)

select 的數(shù)據(jù)列只從索引中獲得,不必查找數(shù)據(jù)行 

4、Using where

5、Using join buffer

使用了連接緩存

6、Impossible where 

where 子句結(jié)果false

7、select table optimized away 

在沒有g(shù)roup by子句的情況下,基于索引優(yōu)化MIN/MAX操作或者對于MyISAM 存儲引擎優(yōu)化COUNT(*) 操作,不必等到執(zhí)行階段再進行計算,查詢執(zhí)行接話生成階段即可完成優(yōu)化

8、distinct

優(yōu)化distinct操作,在找到第一匹配的元組后即停止找同樣值的動作

以上是“mysql中執(zhí)行計劃索引的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享文章:mysql中執(zhí)行計劃索引的示例分析
路徑分享:http://bm7419.com/article36/pcedpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名虛擬主機、Google微信公眾號、做網(wǎng)站網(wǎng)頁設(shè)計公司

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)