《純干貨:Mysql性能優(yōu)化Explain分析》要點:
本文介紹了純干貨:Mysql性能優(yōu)化Explain分析,希望對您有用。如果有疑問,可以聯(lián)系我們。
MySQL 提供了一個 EXPLAIN 命令, 它可以對 SELECT 語句進行分析, 并輸出 SELECT 執(zhí)行的詳細信息, 以供開發(fā)人員針對性優(yōu)化
EXPLAIN 用法:
EXPLAIN SELECT * FROM test WHERE id = 100;
數(shù)據(jù)表結(jié)構(gòu)
數(shù)據(jù)
id
SELECT 查詢的標識符. 每個 SELECT 都會自動分配一個唯一的標識符.
select_type
SELECT 查詢的類型.
table
查詢的是哪個表
type
join 類型
possible_keys
此次查詢中可能選用的索引
key
此次查詢中確切使用到的索引.
ref
哪個字段或常數(shù)與 key 一起被使用
rows
顯示此查詢一共掃描了多少行. 這個是一個估計值.
extra
其他信息
SIMPLE
簡單的 select 查詢,不使用 union 及子查詢
PRIMARY
最外層的 select 查詢
UNION
UNION 中的第二個或隨后的 select 查詢,不 依賴于外部查詢的結(jié)果集
DEPENDENT UNION
UNION 中的第二個或隨后的 select 查詢,依 賴于外部查詢的結(jié)果集
SUBQUERY
子查詢中的第一個 select 查詢,不依賴于外 部查詢的結(jié)果集
DEPENDENT SUBQUERY
子查詢中的第一個 select 查詢,依賴于外部 查詢的結(jié)果集
DERIVED
用于 from 子句里有子查詢的情況. MySQL 會 遞歸執(zhí)行這些子查詢, 把結(jié)果放在臨時表里.
UNCACHEABLE SUBQUERY
結(jié)果集不能被緩存的子查詢,必須重新為外 層查詢的每一行進行評估.
UNCACHEABLE UNION
UNION 中的第二個或隨后的 select 查詢,屬 于不可緩存的子查詢
system
表僅有一行(=系統(tǒng)表).這是 const 連接類型的一個特例.
constconst
用于用常數(shù)值比較 PRIMARY KEY 時.當 查詢的表僅有一行時,使用 System.
eq_refconst
用于用常數(shù)值比較 PRIMARY KEY 時.當 查詢的表僅有一行時,使用 System.
ref
連接不能基于關(guān)鍵字選擇單個行,可能查找 到多個符合條件的行. 叫做 ref 是因為索引要 跟某個參考值相比較.這個參考值或者是一 個常數(shù),或者是來自一個表里的多表查詢的 結(jié)果值.
ref_or_null
如同 ref, 但是 MySQL 必須在初次查找的結(jié)果 里找出 null 條目,然后進行二次查找.
index_merge
說明索引合并優(yōu)化被使用了.
unique_subquery
在某些 IN 查詢中使用此種類型,而不是常規(guī)的 ref:value IN (SELECT primary_key FROM single_table WHERE some_expr)
index_subquery
在 某 些 IN 查 詢 中 使 用 此 種 類 型 , 與 unique_subquery 類似,但是查詢的是非唯一 性索引: value IN (SELECT key_column FROM single_table WHERE some_expr)
range
只檢索給定范圍的行,使用一個索引來選擇 行.key 列顯示使用了哪個索引.當使用=、 <>、>、>=、<、<=、IS NULL、<=>、BETWEEN 或者 IN 操作符,用常量比較關(guān)鍵字列時,可 以使用 range.
index
全表掃描,只是掃描表的時候依照索引次序 進行而不是行.主要優(yōu)點就是避免了排序, 但是開銷仍然非常大.
all
最壞的情況,從頭到尾全表掃描.
type 類型的性能關(guān)系如下:
ALL < index < range ~ index_merge < ref < eq_ref < const < system
在使用過程中,經(jīng)常關(guān)注的是 type 和 Extra,主要為了判斷執(zhí)行的sql語句是否使用到了索引或者是否是全表掃描等等!
全表掃描
以上僅僅是列出了很簡單的一些理論知識和簡單的sql語句分析,詳細的還需要各位多多查閱資料!總之:
MySql 中的 explain 語法可以贊助我們改寫查詢,優(yōu)化表的結(jié)構(gòu)和索引的設置,從而最大地提高查詢效率.
歡迎參與《純干貨:Mysql性能優(yōu)化Explain分析》討論,分享您的想法,維易PHP學院為您提供專業(yè)教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/8014.html