1.explain分析sql語句
例如:
傳回結果:
而今天檢查的不是這條sql,遠比這條複雜,不過也能反映情況了。
(1)使用視圖導緻sql在執行過程中需要用中間表,就是using temporary。 因為視圖無法使用索引,這也導緻性能會比較低效。
(2)當有order by出現時,而且排序字段沒有添加索引,那就會導緻using filesort,導緻磁盤的檔案排序。
(3)而因為uam_view_unit_account 這個視圖是union4張表得出的(union result),這裡面rows和type都無法提高性能。
2.屬性解析
隻記幾個重要的屬性:
(1)type顯示的是通路類型,是較為重要的一個名額,結果值從好到壞依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all
一般來說,得保證查詢至少達到range級别,最好能達到ref,否則就可能會出現性能問題。
(1)要讓查詢盡可能的快,就應該注意 extra 字段的值為usingfilesort 和 using temporary 的情況。
3.小總結
(1)如果發現某條sql執行非常慢,那就需要将直接sql在資料庫裡進行explain分析。
(2)檢視explain的表格,重點檢視裡面的type、rows、extra三個屬性。
1.type為all或index;
2.extra有using filesort或using temporary;
3.rows的數值跟其表的資料條數差不多;
這個時候代表這條sql急需優化了。
(3)根據分析提示建相關的索引,甚至是修改sql寫法,以便提高效率。
轉載:http://www.cnblogs.com/lovesong/p/3793522.html