《mysql中select語句性能檢測》要點:
本文介紹了mysql中select語句性能檢測,希望對您有用。如果有疑問,可以聯系我們。
mysql中explain詳細介紹,用于判斷select語句查詢性能的很好辦法
語法:explain select ....
變體:
1.explain extended select ....
將執行方案“反編譯”成select語句;
運行show warnings 可以獲得被mysql優化器優化后的語句
2.explain partitions select ...
用于分區表的explain
運行成果含義:
type: all ,index,range,ref,eq_ref,const,system null 從左到右,最差到最好;
all: full table scan ;mysql將遍歷全表以找到匹配的行;
index : index scan; index 和 all的區別在于index類型只遍歷索引;
range:索引規模掃描,對索引的掃描開始于某一點,返回匹配值的行,常見與between ,< ,>等查詢;
ref:非唯一性索引掃描,返回匹配某個零丁值的所有行,常見于使用非唯一索引即唯一索引的非唯一前綴進行查找 ;
eq_ref:唯一性索引掃描,對付每個索引鍵,表中只有一條記錄與之匹配,常用于主鍵或者唯一索引掃描;
const,system:當mysql對某查詢某部分進行優化,并轉為一個常量時,使用這些拜訪類型.如果將主鍵置于where 列表中,mysql就能將該查詢轉化為一個常量.
possible keys:
指出mysql能使用哪個索引在表中找到行,查詢涉及到的字段若存在索引,則該索引被列出,但是不必定被查詢使用 .
key:顯示mysql在查詢中實際使用的索引,若沒有使用索引,則顯示為null.
key_len:表現索引中使用的字節數,可以通過該列計算查詢中使用的索引的長度.key_len顯示的值為索引字段的最 大長度,并非實際使用長度.即key_len是根據表定義計算而得,不是通過表內檢索出的.
ref:表現上述表的連接匹配條件,即哪些列或者常量被用于查找索引上的值;
rows:表示mysql根據表統計信息以及索引選用情況,估算的找到所需記錄所必要的行數;
extra:包括不適合在其他列中顯示但是十分重要的額外信息
a:using index:該值表現相迎的select操作中使用了覆蓋索引(cover index)
b:using where:表現mysql服務器再存儲引擎受到記錄后進行“后過濾”;
c:using temporary :表示mysql必要使用臨時表來存儲結果集,常見于排序和分組查詢;
d:using filesort:mysql中無法利用索引完成排序,稱為“文件排序”;
局限:
explain不會告訴你關于觸發器,存儲過程的信息或者用戶自界說的函數對查詢的影響情況.
explain不會斟酌cache.
維易PHP培訓學院每天發布《mysql中select語句性能檢測》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。