MySQL explain命令詳解(二)

2021-10-05 14:53:57 字數 1143 閱讀 9661

explain命令的表頭

表示該查詢的型別,有如下8種值:

system:表示表中只有一行記錄。

const:通過索引查詢,且一次找到記錄,針對主鍵或唯一鍵的索引,如使用者id。

例子中,主鍵作為where子句的條件,且為單個值,作為常量處理,即id為2的查詢為const型別;由於子查詢只有一行記錄,因此外層查詢是system型別的。

3. eq_ref:通過索引進行查詢,每個索引都只有唯一一行記錄匹配,找到一條記錄後就停止了檢索,常見主鍵和唯一索引。(唯一性索引掃瞄)

4.ref:通過索引進行查詢,返回匹配乙個值的所有行。索引值也是乙個常量,但可能有多個符合條件的行,所以在找到一條記錄後不能馬上停止檢索。(非唯一性索引掃瞄)

例子中 ,col1='ac'是通過索引col1和常量'ac'來查詢的,但可能有多個符合條件的值。

5.range:查詢過程中只找給定範圍的行,一般是sql條件語句**現、between、in等表示範圍的關鍵字。

6.index:通過遍歷索引樹進行查詢。

7.all:全表掃瞄,效率最低,若專案中常出現此型別的查詢,需要進行優化。

一般保證查詢達到range級別以上

查詢中可能用到的索引,不一定被mysql使用。

在實際查詢中用到的索引,如果沒有索引或者索引失效,則該值為null

注意:如果查詢用到了覆蓋索引(乙個索引包含所有需要查詢的字段的值),則該索引不會出現在possible_keys中,只會出現在keys中。

MySQL explain命令詳解

explain顯示了mysql如何使用索引來處理select語句以及連線表。在分析慢查詢時,可以幫助選擇更好的索引和寫出更優的查詢語句。使用方法 explain select id,name from a,b where a.id b.idexplain列的解釋 值意義 distinct 一旦mys...

MySQL explain命令詳解(一)

先來看看explain命令的表頭 表頭查詢的序列號,包含一組數字,表示了乙個查詢過程中select子句或操作表的順序。有三種情況 1 id相同,表示順序執行,自上而下。執行順序 t1 t3 t2。2 id不同且是子查詢,則id值越大,表示其優先順序越高,越先被執行。執行順序 t3 t1 t2。3 i...

MySQL MariaDB grant命令詳解

mysql mariadb中可以給你乙個使用者授予如select,insert,update,delete等其中的乙個或者多個許可權,主要使用grant命令,用法格式為 grant 許可權 on 資料庫物件 to 使用者 一 grant 普通資料使用者,查詢 插入 更新 刪除 資料庫中所有表資料的權...