MySQL中的执行计划
MySQL中的執行計劃
在MySQL中可以通過explain關鍵字模擬優化器執行SQL語句,從而知道MySQL是如何處理SQL語句的;
一、Mysql整個查詢執行過程
?客戶端向MySQL服務器發送一條查詢條件;
?服務器首先檢查查詢緩沖,如果命中緩存,則立刻返回存儲在緩存中的結果。否則進入下一階段;
?服務器進行SQL解析、預處理、再由優化器生成對應的執行計劃;
?MySQL根據執行計劃,調用存儲引擎的API來執行查詢;
?講結果返回給客戶端,同時緩存查詢結果;
二、如何啟動執行計劃
Explain select 投影列 from 表名 where 條件
三、Explain列分類
?ID
?select_type
?Table
?Type
?Possible_keys
?Key
?Key_len
?Ref
?Rows
?Fitered
?Extra
四、ID
查詢執行順序;
?Id值相同時表示從上向下執行;
?Id值相同被視為一組;
?如果是子查詢,id值會遞增,id值越高,優先級越高;
五、Select_type
每一步執行怎樣的查詢;
六、Table
顯示這一行的數據是關于哪張表的;
七、partitions
數據來源;
八、Type
最重要的列,顯示連接使用了何種類型。從最好到最壞的連接類型為system、const、 eq_reg、ref、range、index和all;
九、Possible_keys
查詢條件字段涉及到的索引,可能沒有使用;
十、Key
實際使用的索引。如果為null,則沒有使用索引;
十一、Key_len
表示索引中使用的字節數,查詢中使用的索引的長度(最大可能長度),并非實際 使用長度,理論上長度越短越好。Key_len是根據表定義計算而得出的,不是通過 表內檢索出的;
十二、Ref
顯示索引的哪一列被使用了,如果可能的話,是一個常量const;
十三、Rows
根據表統計信息及索引選用情況,大致估算出找所需的記錄所需要讀取的行數;
十四、Fitered
顯示了通過條件過濾出的行數的百分比估計值;
十五、Extra
MySQL如何解析查詢的額外信息;
總結
以上是生活随笔為你收集整理的MySQL中的执行计划的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL中的分页查询
- 下一篇: MySQL与Oracle的区别