Mysql執行計畫 Extra列解析

2021-08-31 05:48:08 字數 1052 閱讀 8275

mysql的執行計畫中,其他的列都比較好理解,唯獨這個extra列,總是看得有點讓人似懂非懂,先終於找了個機會自己研究了下。

using index:

中文名叫做索引覆蓋查詢: 如果查詢的時候,用到了索引,並且你最終需要的資料也是這個索引的一部分,那麼就出現using index.

例如:user表有索引 key(id), key(name)

select id from user;

select name from user;

select id from user where id<9;

而select id,name from user where id<9就沒有

組合索引key(id,name)

select id,name from user where id>9也可以有

using where:

會根據查詢條件過濾出結果集

using file sort 以及using temporary:

這2個是最容易讓人迷惑的,很多人都可能會把其表達的意思擴充套件理解了,其實他表達的內容很有限。

using file sort: 表示排序的時候,沒有用上索引,不得不採取其他的方式排序。 這裡的其他方式有在記憶體排,在臨時檔案排,採用雙路排序法,或者是採用整行排序等,而using file sort並沒有說是其他哪些排序方法。

using temporary: 表示用到了一張臨時表,至於這臨時表在記憶體裡面,還是在磁碟裡面都不明。

出現這個兩個步驟的情況非常多,這裡只列幾個吧:

using file sort:

order by 的第一列不是執行計畫中的第乙個表的索引上

order by 有多列,不在同一table上的索引

order by 的列,有公升序,降序,不一致

using temporary:

在group by的時候,如果,被group by的列不在索引上,那麼就需要臨時表來進行group,另外如果沒有order by null,也許會要file sort進行排序。

在order by的時候,如果被排序的列,分布在多餘乙個表上

mysql執行計畫列說明

本文介紹了mysql 執行計畫列說明。select查詢的序列號,包含一組數字,表示查詢中執行select子句或操作表的順序 三種情況 id相同,執行順序由上至下 id不同,如果是子查詢,id的序號會遞增,id值越大優先順序越高,越先被執行 id相同不同,同時存在 型別描述 簡單的select查詢,查...

mysql執行計畫 MySQL 執行計畫

1.執行計畫的定義 什麼是執行計畫 查詢計畫 呢?執行計畫就是一系列的操作步驟。sql是宣告性語言,它只告訴資料庫要查詢什麼,但並不告訴資料庫如何去查。資料庫所要做的就是基於演算法和統計資訊計算出一條最佳的訪問路徑。這個工作是由優化器來完成的。優化器會比較不同的執行計畫,然後選擇其中最優的一套。2....

mysql 生成執行計畫 MySQL執行計畫

和很多其他關係型資料庫不通,mysql並不會在生成查詢位元組碼來執行查詢。mysql生成查詢的一棵指令樹,然後通過儲存引擎執行完成這棵指令樹並返回結果。最終的執行計畫包含了重構查詢的全部資訊。如果某個查詢執行explain extended 之後,在執行show warnings,就可以看到重構出的...