MySQL查詢優化器

查詢優化器 Optimizer

查詢優化器的任務是發現執行SQL查詢的最佳方案。

explain查看優化器優化過程中的信息

id: MySQL Query Optimizer 選定的執行計劃中查詢的序列號。表示查詢中執行 select 子句或操作表的順序,id值越大優先級越高,越先被執行。id 相同,執行順序由上至下。 
select_type:查詢類型,SIMPLE、PRIMARY、UNION、DEPENDENT UNION等。 
table:顯示這一行的數據是關於哪張表的 
type:這是重要的列,顯示連接使用了何種類型。從最好到最差的連接類型爲const、eq_reg、ref、range、indexhe和all 
possible_keys:顯示可能應用在這張表中的索引。如果爲空,沒有可能的索引。可以爲相關的域從where語句中選擇一個合適的語句 
key: 實際使用的索引。如果爲null,則沒有使用索引。很少的情況下,mysql會選擇優化不足的索引。這種情況下,可以在select語句中使用use index(indexname)來強制使用一個索引或者用ignore index(indexname)來強制mysql忽略索引 
key_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好 
ref:顯示索引的哪一列被使用了,如果可能的話,是一個常數 
rows:mysql認爲必須檢查的用來返回請求數據的行數 
extra:關於mysql如何解析查詢的額外信息。

執行過程

邏輯優化,主要功能是基於關係代數以及啓發式規則,找出SQL語句等價的變換形式,使得SQL執行更高效;

物理優化,即根據代價估算模型,選擇最優的表連接順序以及數據訪問方式,這個階段依賴於對數據的瞭解。

https://zhuanlan.zhihu.com/p/56790651

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章