MySQL 執行計畫EXPLAIN

2021-09-22 14:04:06 字數 1314 閱讀 9799

mysql 提供了乙個 explain 命令,它可以對 select 語句進行分析,並輸出 select 執行的詳細資訊,以供開發人員針對性優化。

使用explain這個命令來檢視乙個這些sql語句的執行計畫,檢視該sql語句有沒有使用上了索引,有沒有做全表掃瞄,這都可以通過explain命令來檢視。

可以通過explain命令深入了解mysql的基於開銷的優化器,還可以獲得很多可能被優化器考慮到的訪問策略的細節,以及當執行sql語句時哪種策略預計會被優化器採用。

explain 命令用法十分簡單, 在 select 語句前加上 explain 就可以了, 例如:

select_type列說明

type列說明

通常來說, 不同的 type 型別的效能關係如下

all < index < range ~ index_merge < ref < eq_ref < const < system

extra

not exists: mysql 能夠對查詢進行 left join 優化, 發現 1 個匹配 left join 標準的行後, 不再為前面的的行組合在該錶內檢查更多的行。

range checked for each record (index map: #): mysql 沒有發現好的可以使用的索引, 但發現如果來自前面的表的列值已知, 可能部分索引可以使用。

using filesort: mysql 需要額外的一次傳遞, 以找出如何按排序順序檢索行。

using index: 從只使用索引樹中的資訊而不需要進一步搜尋讀取實際的行來檢索表中的列資訊。

using temporary: 為了解決查詢, mysql 需要建立乙個臨時表來容納結果。

using where: where 子句用於限制哪乙個行匹配下乙個表或傳送到客戶。

using sort_union(…), using union(…), using intersect(…): 這些函式說明如何為 index_merge 聯接型別合併索引掃瞄。

using index for group-by: 類似於訪問表的 using index 方式,using index for group-by 表示 mysql 發現了乙個索引,可以用來查詢 group by 或 distinct 查詢的所有列, 而不要額外搜尋硬碟訪問實際的表。

mysql執行計畫 MySQL 執行計畫

1.執行計畫的定義 什麼是執行計畫 查詢計畫 呢?執行計畫就是一系列的操作步驟。sql是宣告性語言,它只告訴資料庫要查詢什麼,但並不告訴資料庫如何去查。資料庫所要做的就是基於演算法和統計資訊計算出一條最佳的訪問路徑。這個工作是由優化器來完成的。優化器會比較不同的執行計畫,然後選擇其中最優的一套。2....

mysql 生成執行計畫 MySQL執行計畫

和很多其他關係型資料庫不通,mysql並不會在生成查詢位元組碼來執行查詢。mysql生成查詢的一棵指令樹,然後通過儲存引擎執行完成這棵指令樹並返回結果。最終的執行計畫包含了重構查詢的全部資訊。如果某個查詢執行explain extended 之後,在執行show warnings,就可以看到重構出的...

mysql 查詢執行計畫 MySql執行計畫的檢視

一。什麼是資料庫執行計畫 利用乙個sql語句,你可能要server取出所有news表中的資訊.當server收到的這條sql的時候,第一件事情並不是解析它.如果這條sql沒有語法錯誤,server才會繼續工作.server會決定最好的計算方式.server會選擇,是讀整個news表好呢,還是利用索引...