mysql的執行計畫的type詳解

2022-08-26 03:36:10 字數 1131 閱讀 4101

type 這一列表示關聯型別或訪問型別,即mysql決定如何查詢表中的行。

執行效率排序

#1.system

#2.const * mysql能對查詢的某部分進行優化並將其轉化成乙個常量。用於 primary key 或 unique key 的所有列與常數比較時,所以表最多有乙個匹配行,讀取1次,速度比較快。

explain select * from (select * from film where id = 1) tmp;

#3.eq_ref * primary key 或 unique key 索引的所有部分被連線使用 ,最多隻會返回一條符合條件的記錄。這可能是在 const 之外最好的聯接型別了,簡單的 select 查詢不會出現這種 type。

explain select * from film_actor left join film on film_actor.film_id = film.id;

#4.ref * 相比eq_ref,不使用唯一索引,而是使用普通索引或者唯一性索引的部分字首,索引要和某個值相比較,可能會找到多個符合條件的行。

explain select * from film where name = "film1";

#5.fulltext

#6.ref_or_null * 類似ref,但是可以搜尋值為null的行。

explain select * from film where name = "film1" or name is null;

#7.index_merge

#8.unique_subquery

#9.index_subquery

#10.range * 範圍掃瞄通常出現在 in(), between ,> ,<, >= 等操作中。使用乙個索引來檢索給定範圍的行。

explain select * from actor where id > 1;

#11.index * 和all一樣,不同就是mysql只需掃瞄索引樹,這通常比all快一些。

explain select count(*) from film;

#12.all * 即全表掃瞄,意味著mysql需要從頭到尾去查詢所需要的行。通常情況下這需要增加索引來進行優化了

explain select * from actor;

解讀MySQL執行計畫的type列和extra列

執行計畫的type表示連線型別,即反映表關聯時的join方式,有很多種訪問型別。1 system 表示這一步只返回一行資料,如果這一步的執行物件是乙個驅動表或者主表,那麼被驅動表或者子查詢只是被訪問一次。1.2 const 表示這個執行步驟最多隻返回一行資料。const通常出現在對主鍵或唯一索引的等...

mysql執行計畫 MySQL 執行計畫

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

mysql的執行計畫

參考 執行計畫是sql效能調優的有效工具,通過執行執行計畫,我們能知道查詢的瓶頸在 是否需要索引以及更改改變sql語句。一 開啟執行計畫 mysql執行計畫預設是關閉的,需要開啟 set profiling on 使用show variables like profil 檢視是否開啟執行計畫 二 執...