我們使用explain關鍵詞就可以查看sql語句是否使用索引,也提高我們sql優化
explain執行結果關注以下幾個字段:
type:
顯示sql執行的類型,從最好到最差的類型爲system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL。一般來說,type至少要達到range級別,最好達到ref級別,低於range級別的sql必須進行優化。
key:
顯示sql執行過程中實際使用的鍵或索引,如果爲null則表示未使用任何索引,必須進行優化。
Extra:
如果是Only index,這意味着信息只用索引樹中的信息檢索出的,這比掃描整個表要快。
如果是where used,就是使用上了where限制。
如果是impossible where 表示用不着where,一般就是沒查出來啥。
如果此信息顯示Using filesort或者Using temporary的話會很吃力,WHERE和ORDER BY的索引經常無法兼顧,如果按照WHERE來確定索引,那麼在ORDER BY時,就必然會引起Using filesort,這就要看是先過濾再排序划算,還是先排序再過濾划算。
demo:
EXPLAIN
SELECT * FROM test WHERE counts > 1;