1. 執行計畫的定義
什麼是執行計畫(查詢計畫) 呢? 執行計畫就是一系列的操作步驟。 sql是宣告性語言, 它只告訴資料庫要查詢什麼, 但並不告訴資料庫如何去查。資料庫所要做的就是基於演算法和統計資訊計算出一條最佳的訪問路徑。 這個工作是由優化器來完成的。 優化器會比較不同的執行計畫, 然後選擇其中最優的一套。
2. 怎樣確認執行計畫是否良好
無論是做研發還是dba, 都有必要學會explain工具的使用。 使用explain工具可以確認執行計畫是否良好, 查詢是否走了合理的索引。 不同版本的mysql優化器各有不同, 一些優化規則隨著版本的發展可能會有變化, 查詢的執行計畫隨著資料的變化也可能會有變化。 對於這類情況可以使用explain來驗證自己的判斷。
3. explain命令
3.1 explain命令的兩種格式
1)explain extended select……
命令說明:
此命令將執行計畫「反編譯」成select語句, 執行show warnings可得到被mysql優化器優化後的查詢語句。
案例:explain extended
select gi.*, ig.*
from gi
left join ig on gi.foreignkey = ig.primarykey;
產生的結果如下圖:
2)explain partitions ....
命令說明:
用於分割槽表的explain命令。
案例:explain partitions
select gi.*, ig.name
from gi
left join ig on gi.id= ig.id;
產生的結果如下圖:
4.執行計畫的侷限
·explain不會告訴你關於觸發器、 儲存過程的資訊或使用者自定義函式對查詢的影響情況。
·explain不考慮各種cache。
·explain不能顯示mysql在執行查詢時所做的優化工作。
·部分統計資訊是估算的, 並非精確值。
·mysql 5.6之前expalin只能解釋select操作, 其他操作需要重寫為select後才能檢視執行計畫。
·如果from子句裡有子查詢, 那麼mysql可能會執行這個子查詢, 如果有昂貴的子查詢或使用了臨時表的檢視, 那麼explain其實會有很大的開銷。
-- sinoknots 著於2018-02-03
mysql索引執行計畫 MySQL索引及執行計畫
mysql索引及執行計畫 索引合理的建立索引可以加快資料查詢,例如,學校圖書管為每一本書編號,根據編號可以快速鎖定一本書所在位置。mysql索引預設b 樹索引。索引雖然能夠提高檢索效率,但同時也會降低更新的速度,因為insert update delete也會操作索引檔案,會調整因為更新等操作帶來的...
mysql 生成執行計畫 MySQL執行計畫
和很多其他關係型資料庫不通,mysql並不會在生成查詢位元組碼來執行查詢。mysql生成查詢的一棵指令樹,然後通過儲存引擎執行完成這棵指令樹並返回結果。最終的執行計畫包含了重構查詢的全部資訊。如果某個查詢執行explain extended 之後,在執行show warnings,就可以看到重構出的...
mysql 查詢執行計畫 MySql執行計畫的檢視
一。什麼是資料庫執行計畫 利用乙個sql語句,你可能要server取出所有news表中的資訊.當server收到的這條sql的時候,第一件事情並不是解析它.如果這條sql沒有語法錯誤,server才會繼續工作.server會決定最好的計算方式.server會選擇,是讀整個news表好呢,還是利用索引...