檢視mysql執行計畫

2021-09-12 01:18:08 字數 1961 閱讀 2569

關鍵字:explain

執行計畫字段含義:請點傳送門

可以檢視sql執行計畫的關鍵字有:select、delete、insert、update、replace

執行計畫的id列:可以為null,也可以是數字。

null的含義是:表示由多條sql產生的結果集。

數字的含義是:表示sql執行的順序,id值相同執行順序由上至下,id值越大優先順序越高,越先被執行。

執行計畫的select_type列:

值的含義

******:不包含子查詢或者union操作的查詢。

primary:查詢中如果包含任何子查詢,那麼最外層的查詢則被標記為primary。

subquery:select列表中的子查詢

dependent subquery:依賴外部結果的子查詢

union:表示union操作的第二個或者是之後的查詢的值

dependent union:表示當union作為子查詢時,第二個或者是第二之後的查詢select_type的值。

union result:表示union操作產生的結果集。

derived:出現在from子句中的子查詢。

執行計畫的table列:輸出的資料行所在的表名稱

:表示由id為m,n查詢union產生的結果集(臨時表)。

或者表示由id為n的查詢產生的結果集(臨時表)。

執行計畫的partitions列:對於分割槽表時,顯示查詢的分割槽id。未分割槽時值為null。

執行計畫的type列:

執行計畫的extra列:表示執行計畫的擴充套件列。

distinct:優化distinct操作,在找到第一匹配的元組後即停止找同樣值的動作。

not exists:使用not exists 優化查詢。

using filesort:使用額外的操作來進行排序,通常出現在order by 或者group by查詢中。

using index:使用了覆蓋索引進行查詢。

using temporary:mysql需要使用臨時表來處理查詢,常見於子查詢,排序,和分組等。

using where:需要在mysql伺服器層使用where條件來過濾資料。

select tables optimized away:直接通過索引來獲取資料,不訪問表(效率最高)。

執行計畫possible_keys列:指出了mysql可以使用那些索引來優化查詢。

查詢列所涉及到的列上的索引都會被列出來,但不一定會被使用。

執行計畫key列:查詢優化器會優化查詢實際所使用的的索引。沒有則會顯示null。

執行計畫:key_len列:表示索引字段最大的可能長度。key_len的長度是由字段定義計算而來,

並非資料的實際長度

執行計畫ref列:表示利用索引進行查詢時的值都**於**。

執行計畫rows列:表示mysql通過索引統計資訊,估算需要讀取的行數。這個值是乙個大概值。

執行計畫filtered列:表示結果返回的行數佔需要讀取的行數的百分比。

值越大越好,也是乙個大概值。

執行計畫是無法展示儲存過程,觸發器,udf對查詢的影響等這些資訊的。

捕獲有問題的sql:

啟用mysql慢查詢日誌:

set global slow_query_log_file = /sql_log/slow_log.log;(設定慢查詢的日誌檔案)

set global log_queryies_not_using_indexs = on;(設定記錄未使用索引的查詢)

set global long_query_time = 0.001;(設定查詢時間超過多少為慢查詢,根據實際來)

set global long_query_log = on;(啟用慢查詢日誌)

檢視mysql慢查詢的日誌檔案:

mysqldumpslow 日誌檔名;

MYSQL檢視執行計畫

1 概述 執行計畫的檢視是進行資料庫的sql語句調優時依據的乙個重要依據,mysql的執行計畫檢視相對oracle簡便很多,功能也相對簡單很多的sql語句都不能直接檢視。2 執行計畫的生成和檢視 2.1 執行計畫的生成方法 explain select 生成的方法很簡單在相應的select前面加ex...

mysql檢視執行計畫

檢視執行計畫的目的 優化sql效能 測試版本 mysql5.7 首推官網文件,有對照表 測試表結構 create table test index1 int 11 not null,index2 int 11 not null,value varchar 255 not null default p...

MYSQL檢視執行計畫

1 概述 執行計畫的檢視是進行資料庫的sql語句調優時依據的乙個重要依據,mysql的執行計畫檢視相對oracle簡便很多,功能也相對簡單很多的sql語句都不能直接檢視。本文件整理了mysql執行計畫的生成方法和檢視。2 執行計畫的生成和檢視 2.1 執行計畫的生成方法 explain select...