簡述:
使用 EXPLAIN 或DESC關鍵字可以模擬優化器執行SQL查詢語句,從而知道MySQL是如何處理你的SQL語句的。這可以幫你分析你的 查詢語句 或是 表結構的性能 瓶頸。
通過explain命令可以得到:
1、表的讀取順序
2、表的讀取操作的操作類型
3、哪些索引可以使用
4、哪些索引被實際使用
5、表之間的引用
6、每張表有多少行被優化器查詢
為什麼要使用explain :
explain可以幫助我們分析 select 語句,讓我們知道查詢效率低下的原因,從而改進我們查詢,讓查詢優化器能夠更好的工作。
MySQL查詢優化器是如何工作的 :
MySQL查詢優化器有幾個目標,但是其中最主要的目標是盡可能地使用索引,並且使用最嚴格的索引來消除盡可能多的數據行。
最終目標是提交SELECT語句查找數據行,而不是排除數據行。
優化器試圖排除數據行的原因在於它排除數據行的速度越快,那麼找到與條件匹配的數據行也就越快。
如果能夠首先進行最嚴格的測試,查詢就可以執行地更快。
explain局限 :
1、explain不會告訴你關於觸發器,存儲過程的信息或者用戶自定義的函數對查詢的影響情況。
2、explain不會考慮cache。