MySQL 中 explain關鍵字

2022-09-04 20:42:09 字數 1199 閱讀 1082

select 查詢的序列號,包含一組數字,表示查詢中執行 select 子句或操作表的順序。三種情況:

id 相同:執行順序由上而下;

from t1,t2,t3 where t1.id = t2.id and t1.id = t3.id and t1.other_column =

'';from t2 where id = (select id from t1 where id = (select t3.id from t3 where t3.other_column =

''));

from (select t3.id from t3 where t3.other_column =

'') s1,t2 where s1.id = t2.id;

possible_keys:顯示可能應用到這張表中的索引,乙個或多個,查詢欄位上若存在索引則列出來,但不一定被查詢實際使用。

key:實際使用的索引,如果該值為null,則沒有使用索引;如果查詢中使用了覆蓋索引,則該索引僅出現在 key列表中。

覆蓋索引就是 select後面的字段都具備索引,提高了查詢效率,前提順序、個數都要一致;

理解方式一就是 select的資料列從索引中就能夠獲取到,不必讀取沒有必要多餘的資料行,mysql可以利用索引返回select列表中的字段,而不必根據索引再次讀取資料檔案,換句話說查詢列要被所建索引覆蓋。

理解方式二索引是高效找到行的乙個方法,但是一般資料庫也能使用索引找到乙個列的資料,因此它不必讀取整個資料行,畢竟索引葉子節點儲存了它們索引的資料;當能通過讀取索引就可以得到想要的資料,那就不需要讀取行了。乙個索引包含了(或覆蓋了)滿足查詢結果的資料就叫做覆蓋索引。

使用覆蓋索引注意如果使用覆蓋索引,一定注意 select列表中只取需要的列,不可使用select *,因為如果將所有字段一起做索引會導致索引檔案過大,查詢效能下降。

根據表統計資訊及索引選用情況,大致估算出找到所需的記錄的行數。常用於優化時檢視,使用該值與實際返回的行數進行比較,如果相差很大,則需要調優。

mysql之explain關鍵字

1 用mysql儲存過程增加100萬條測試資料 儲存過程 建立儲存過程,資料庫名test,表名student create procedure myinst n int begin declare i int default0 set autocommit 0 repeat set i i 1 in...

MySQL 優化之 EXPLAIN 關鍵字

mysql查詢優化之explain的深入解析 首先執行如下的 sql 語句 create table ifnot exists article id int 10 unsigned not null auto increment,author id int 10 unsigned not null,...

MySql關鍵字explain優化SQL語句

explain關鍵字可以模擬mysql優化器執行sql語句,可以很好的分析sql語句或表結構的效能瓶頸。老規矩,廢話不多說直接上 explain select from 表1 left join 表2 on 表1.id 表2.id 在sql最上面新增explain關鍵字,然後進行執行sql就會看到以...