前言
整理的MySQL的相關技術點,其中的sql語句優化還是很重要的。所以想寫一系列的文章來整理一下。這篇就先寫概述,SQL語句性能分析的關鍵子的大概意思!
正文
先說說Explain是什麼吧!
使用 EXPLAIN 關鍵字可以模擬優化器執行 SQL 查詢語句,從而知道 MySQL 是如何處理你的 SQL 語句的。分 析你的查詢語句或是表結構的性能瓶頸。 可以幫助選擇更好的索引和寫出更優化的查詢語句。
用法:
Explain+SQL 語句。
例:
explain select * from table1,table2,table3 where table1.id=table2.id and table2.id=table.3.id;
Explain 執行後返回的信息:
接下來分別介紹每個字段是什麼意思:
一、id
select 查詢的序列號,包含一組數字,表示查詢中執行 select 子句或操作表的順序。
二、select_type
select_type 代表查詢的類型,主要是用於區別普通查詢、聯合查詢、子查詢等的複雜查詢。
三、table
這個數據是基於哪張表的。
四、type
type 是查詢的訪問類型。是較爲重要的一個指標,結果值從最好到最壞依次是: system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL ,一般來說,得保證查詢至少達到 range 級別,最好能達到 ref。
五、possible_keys
顯示可能應用在這張表中的索引,一個或多個。查詢涉及到的字段上若存在索引,則該索引將被列出,但不一 定被查詢實際使用。
六、key
實際使用的索引。如果爲NULL,則沒有使用索引
七、key_len
表示索引中使用的字節數,可通過該列計算查詢中使用的索引的長度。 key_len 字段能夠幫你檢查是否充分的 利用上了索引。ken_len 越長,說明索引使用的越充分。
八、ref
顯示索引的哪一列被使用了,如果可能的話,是一個常數。哪些列或常量被用於查找索引列上的值。
九、rows
rows 列顯示 MySQL 認爲它執行查詢時必須檢查的行數。越少越好!
十、Extra
其他的額外重要的信息。
結束
SQL性能優化是一個很重要的過程,所以能夠把Explain的相關技術搞清楚對以後的寫sql語句很有幫助,數據量小的時候根本沒什麼感覺,如果數據量大了的話sql語句優化後的時間是一個讓人驚訝的變化。