表的讀取順序
讀取操作的型別
可用索引,實際使用的索引
表之間的引用
每張表多少行被優化器查詢
索引的長度
explain欄位解釋:
øtable:顯示這一行的資料是關於哪張表的
øpossible_keys:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。可以為相關的域從where語句中選擇乙個合適的語句
økey:實際使用的索引。如果為null,則沒有使用索引。mysql很少會選擇優化不足的索引,此時可以在select語句中使用use index(index)來強制使用乙個索引或者用ignore index(index)來強制忽略索引
økey_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好
øref:顯示索引的哪一列被使用了,如果可能的話,是乙個常數
ørows:mysql認為必須檢索的用來返回請求資料的行數
øtype:這是最重要的字段之一,顯示查詢使用了何種型別。從最好到最差的連線型別為system、const、eq_reg、ref、range、index和all
system、const:可以將查詢的變數轉為常量. 如id=1; id為 主鍵或唯一鍵.
eq_ref:訪問索引,返回某單一行的資料.(通常在聯接時出現,查詢使用的索引為主鍵或惟一鍵)
ref:訪問索引,返回某個值的資料.(可以返回多行) 通常使用=時發生
range:這個連線型別使用索引返回乙個範圍中的行,比如使用》或《查詢東西,並且該字段上建有索引時發生的情況(注:不一定好於index)
index:以索引的順序進行全表掃瞄,優點是不用排序,缺點是還要全表掃瞄
all:全表掃瞄,應該盡量避免
øextra:關於mysql如何解析查詢的額外資訊,主要有以下幾種
using index:只用到索引,可以避免訪問表.
using where:使用到where來過慮資料. 不是所有的where clause都要顯示using where. 如以=方式訪問索引.
using tmporary:用到臨時表
using filesort:用到額外的排序. (當使用order by v1,而沒用到索引時,就會使用額外的排序)
range checked for eache record(index map:n):沒有好的索引.
顯示mysql如何使用索引來處理select語句以及連線表。
可以幫助選擇更好的索引和寫出更優化的查詢語句。
簡述:
使用 explain 或desc關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是如何處理你的sql語句的。這可以幫你分析你的 查詢語句 或是 表結構的效能 瓶頸。
通過explain命令可以得到:
1、表的讀取順序
2、表的讀取操作的操作型別
3、哪些索引可以使用
4、哪些索引被實際使用
5、表之間的引用
6、每張表有多少行被優化器查詢
為什麼要使用explain :
explain可以幫助我們分析 select 語句,讓我們知道查詢效率低下的原因,從而改進我們查詢,讓查詢優化器能夠更好的工作。
mysql查詢優化器是如何工作的 :
mysql查詢優化器有幾個目標,但是其中最主要的目標是盡可能地使用索引,並且使用最嚴格的索引來消除盡可能多的資料行。
最終目標是提交select語句查詢資料行,而不是排除資料行。
優化器試圖排除資料行的原因在於它排除資料行的速度越快,那麼找到與條件匹配的資料行也就越快。
如果能夠首先進行最嚴格的測試,查詢就可以執行地更快。
explain侷限 :
1、explain不會告訴你關於觸發器,儲存過程的資訊或者使用者自定義的函式對查詢的影響情況。
2、explain不會考慮cache。
查詢優化 | mysql慢查詢優化
explain分析查詢
使用 explain 關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是如何處理你的sql語句的。這可以幫你分析你的查詢語句或是表結構的效能瓶頸。通過explain命令可以得到 表的讀取順序 資料讀取操作的操作型別 哪些索引可以使用 哪些索引被實際使用 表之間的引用 每張表有多少行被優化器...
EXPLAIN分析SQL語句
使用explain關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是如何處理你的sql語句,可以幫助選擇更好的索引和寫出更優化的查詢語句。explain 的每個輸出行包括下面的列 select查詢的序列號,包含一組數字,表示查詢中執行select子句或操作表的順序。有三種情況 select...
EXPLAIN分析SQL語句
explain顯示了mysql如何使用索引來處理select語句以及連線表。使用explain關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是如何處理你的sql語句的,繼而可以幫助選擇更好的索引和寫出更優化的查詢語句。explain select的sql語句 上圖顯示了explain的結...