mysql 查詢計畫結果字段含義分析

2021-10-01 05:29:00 字數 1686 閱讀 6740

id列中的資料為一組數字,表示執行select語句順序

id值相同時,執行順序由上至下

id值越大優先順序越高,越先被執行

******: 不包含子查詢或是union操作的查詢

primary :查詢中如果包含任何子查詢,那麼最外層的查詢則被標記為 primary

subquery : select列表中的子查詢

dependent subquery: 依賴外部結果的子查詢

union union操作的第二個或是之後的查詢的時為 union

dependent unioin : 當union作為子查詢時,第二或是第二個後的查詢的 select_type值

union result :union產生的結果集

derived :出現在from子句中的子查詢

輸出資料行所在的表的名稱

< unionm,n>由id為m,n查詢union產生的結果集

< derivedn>/< subqueryn> 由id為n的查詢產生的結果

對於分割槽表,顯示查詢的分割槽id

對於非分割槽表,顯示的為 null

效能從上到下,由高到低

system 這是const聯接型別的乙個特例,當查詢的表只有一行時使用

const 表中有且只有乙個匹配的行時使用,如對主鍵或是唯一索引的查詢,這是效率最高的聯接方式

eq_ref :唯一索引或主鍵引查詢,對於每個索引鍵,表中只有一條記錄與之匹配。

ref 非唯一索引查詢,返回匹配某個單獨值的所有行。

ref_or_null 類似於 ref型別的查詢,但是附加了對 null 值列的查詢

index_merge 該聯接型別表示使用了索引合併優化的方法

range 索引範圍的掃瞄常見於 between, > ,《這樣的查詢條件

index full index scan全索引掃瞄,通all的區別時,遍歷的時索引樹

all full tabel scan 全表掃瞄,這是效率最差的聯接方式

指出mysql能使用那些索引來優化查詢

查詢列所涉及的列上的索引都會被列出來,但不一定會被使用

查詢優化器優化查詢實際所使用的索引

如果沒有可用的索引,則顯示 null

表示索引欄位的最大的可能長度

key_len的長度由欄位定義計算而來,並非資料的實際長度

表示那些列或常量被用於查詢索引列上的值

表示msql通過索引的統計資訊,估算的所需讀取的行數

rows值的大小時個統計抽樣的結果,並不十分的準確

表示返回的結果的行數佔需要讀取行數的百分比

filtered列的值越大越好

filtered列的值依賴的說統計資訊

distinct 優化distinct操作,在找到第一匹配的元祖後即停止找同樣的動作

not exists 使用 not exists 來優化查詢

using filesort 使用額外操作進行排序,通常會出現在order by 或 group by 查詢

using index 使用了覆蓋索引進行查詢

using temporary mysql需要使用臨時表來處理查詢,常見於排序,子查詢,和分組查詢

using where 需要在mysql伺服器層使用 where條件來過濾資料

slect tables /optimized away 直接通過索引來獲得資料,不用訪問表

1.本文**

mysql explain查詢結果字段說明

1 id 這是select的查詢序列號 2 select type select type就是select的型別,可以有以下幾種 簡單select 不使用union或子查詢等 primary 最外面的select union union中的第二個或後面的select語句 dependent unio...

為 MySQL 的查詢結果新增排名字段

我正在用 mysql 客戶端的時候,突然想到如果可以給查詢結果新增排名該多好啊,然後就找到了乙個簡單的解決辦法。下面是乙個示例表的資料 然後我們要根據 roll no 字段進行排序並給出排名,我們首先必須定義乙個初始值為0的變數,然後在查詢結果中使用這個變數。如下面的 view source pri...

為 MySQL 的查詢結果新增排名字段

正在用 mysql 客戶端的時候,突然想到如果可以給查詢結果新增排名該多好啊,然後就找到了乙個簡單的解決辦法。下面是乙個示例表的資料 然後我們要根據 roll no 字段進行排序並給出排名,我們首先必須定義乙個初始值為0的變數,然後在查詢結果中使用這個變數。如下面的 1set counter 0 2...