mysql查詢 EXPLAIN 簡單解釋

2021-08-08 17:41:49 字數 1916 閱讀 4701

慢查詢:

參與連線運算的表是內錶
const    where 條件篩選至多有一條匹配時

eq_ref 基於索引做掃瞄、連線欄位為唯一索引或主鍵索引、索引值不為null、操作符為 =

使得對外表的一條元組,內錶只有唯一一條元組與之對應。

ref 基於單錶或*強調內容*連線。基於索引做掃瞄、連線欄位非唯一索引或主鍵索引、連線欄位不為null、操作符為 =

使得對外表的一條元組,內錶可有若干條元組與之對應。

ref_or_null 類似ref,只是搜尋條件包括:連線欄位的值可以為null的情況,比如 where col =

2or col is null

range 範圍掃瞄,基於索引做範圍掃瞄,為諸如between,in,>=,like類操作提供支援

index_scan 索引做掃瞄,是基於索引在索引的葉子節點上找滿足條件的資料(不需要訪問資料檔案)

all 全部資料

unique_subquery 在子查詢中,基於唯一索引進行掃瞄,類似於eq_ref

ftfull text,全文檢索

index_subquery 在子查詢中,基於除唯一索引之外的索引進行掃瞄

index_merge 多重範圍掃瞄

index_merge 該聯接型別表示使用了索引合併優化方法。在這種情況下,key列包含了使用的索引的清單,key_len包含了使用的索引的最長的關鍵元素。

all

distinct     mysql 發現第乙個匹配停止匹配

range checked for

each

record

not exists 沒有找到合適的索引

using filesort 「mysql需要額外的一次傳遞,以找出如何按排序順序檢索行,通過根據聯接型別瀏覽所有行並為所有匹配where子句的行儲存排序關鍵字和行的指標來完成排序,然後關鍵字被排序,並按排序順序檢索行。」

eg: select id from test where room=100

order

by id; (room 有索引,id沒有索引,使用索引先查出room =1000 的資料,然後再次使用排序來實現結果篩選)

using temporaty; 使用了臨時表(典型的連表時使用了group

by / order

by)using

where 表示優化器需要通過索引回表查詢資料;

roes_affect = 0;

do while roes_affect >0 ;

將多個join拆分成單獨的 select

- 可以充分利用mysql_query();

- 執行單個查詢,可減少鎖競爭

- 使用了雜湊關聯而不是mysql的巢狀迴圈關聯*

sql -> 查詢快取 -> sql解析器 -> 預處理器 -> 優化器生成執行計畫 -> 呼叫儲存引擎api -> 資料

mysql 客戶端和伺服器之間的通訊協議是半雙工。

同一時刻,要麼是伺服器想客戶端傳送資料,要麼客戶端向伺服器傳送資料,不能同時進行。

max_allow_packet

mysql_query vs mysql_unbuffered_query() php指定,是否使用記憶體快取首先將獲取到的資料放到記憶體中,然後再執行迴圈操作。

mysql 狀態查詢 show full processlist

analyzing and statistics 執行緒正在收集儲存引擎的統計資訊,並生產查詢的執行計畫。

copying to tmp table [on disk] 執行緒在執行查詢計畫,並將結果複製到乙個臨時表中。 一般在做group,檔案排序,或者union操做。

MySQL查詢優化語句 explain

一 mysql 查詢優化器是如何工作的 mysql 查詢優化器有幾個目標,但是其中最主要的目標是盡可能地使用索引,並且使用最嚴格的索引來消除盡可能多的資料行。最終目標是提交 select 語句查詢資料行,而不是排除資料行。優化器試圖排除資料行的原因在於它排除資料行的速度越快,那麼找到與條件匹配的資料...

mysql 慢查詢日誌 explain詳解

show variables like slow query log show variables like slow query show variables like long query time set global slow query log on set global slow que...

mysql查詢優化explain命令詳解

mysql查詢優化的方法有很多種,explain是工作當中用的比較多的一種檢查方式。explain翻譯即解釋,就是看mysql語句的查詢解釋計畫,從解釋計畫我們能很清楚的看到解釋的語句有沒有合理用到索引,掃瞄了多少行數,有沒有觸及全表掃瞄 用到臨時表等影響慢查詢的原因。使用很簡單,如 explain...