6.**key優(yōu)化器從possible_keys中命中的索引
7.key_len查詢用到的索引長度(字節(jié)數(shù)),key_len只計算where條件用到的索引長度,而排序和分組就算用到了索引,也不會計算到key_len中 。
8.ref如果是使用的常數(shù)等值查詢,這里會顯示const 。
如果是連接查詢,被驅(qū)動表的執(zhí)行計劃這里會顯示驅(qū)動表的關(guān)聯(lián)字段 。
如果是條件使用了表達式或者函數(shù),或者條件列發(fā)生了內(nèi)部隱式轉(zhuǎn)換,這里可能顯示為func 。
9.**rows這是mysql估算的需要掃描的行數(shù)(不是精確值) 。
這個值非常直觀顯示 SQL 的效率好壞, 原則上 rows 越少越好 。
10.filtered此列表示存儲引擎返回的數(shù)據(jù)在server層過濾后,剩下多少滿足查詢的記錄數(shù)量的比例,注意是百分比,不是具體記錄數(shù)
11.**extra在大多數(shù)情況下會出現(xiàn)以下幾種情況 。
Using index:使用了覆蓋索引,查詢列都為索引字段Using where:使用了where語句Using temporary :查詢結(jié)果進行排序的時候使用了一張臨時表Using filesort :對數(shù)據(jù)使用一個外部的索引排序Using index condition:使用了索引下推,關(guān)于索引下推可以查看之前文章MySQL索引一文12.總結(jié)以上就是關(guān)于Explain所有列的說明,在平時開發(fā)的過程中,一般只會關(guān)注type、key、rows、extra這四列 。
type優(yōu)化目標至少達到range級別,要求是ref級別,如果可以consts最好 。key是查詢使用到的索引,如果此列為空,要么未建立索引,要么索引失效 。rows是這條SQL語句掃描的行數(shù),越少越好 。extra:此列為擴展列,如果出現(xiàn)臨時表、文件排序則需要優(yōu)化 。四、SQL優(yōu)化殺手锏之慢查詢
上文說到了可以直接使用explain來分析自己的SQL語句是否合理,接下來再聊一個點那就是慢查詢 。
查看慢查詢是否打開
查看是否記錄沒有使用索引的SQL語句
開啟慢查詢、開啟記錄沒有使用到索引的SQL語句
set global log_queries_not_using_idnexes=‘on’;
set global log_queries_not_using_indexes=‘on’;
查詢以上倆個配置是否打開
設(shè)置慢查詢時間,這個時間由自己把控,一般1s即可set globle long_query_time=1;
如果查看這個時間沒有變,則關(guān)于客戶端再重新連接一次即可 。
查看慢查詢存儲位置
然后隨便執(zhí)行一條不執(zhí)行索引的語句即可在這個日志中查看到此語句
上圖中一般需要主要觀察的是Query_time、SQL語句內(nèi)容 。
以上就是關(guān)于如何使用慢查詢來查看項目中出現(xiàn)問題的SQL語句 。
五、優(yōu)化大法
此處跟大家聊一些常用的SQL語句優(yōu)化方案,以上的倆個工具要好好地利用,輔助我們進行打怪 。
禁止使用select *,需要什么字段查詢什么字段where字段設(shè)置索引group by、order by字段設(shè)置索引舍棄offset,limit分頁,使用延遲關(guān)聯(lián)來實現(xiàn)分頁(數(shù)據(jù)量不大時可不用)寫分頁時當(dāng)count為0時,直接返回避免執(zhí)行分頁語句利用覆蓋索引進行查詢避免回表建立復(fù)合索引時區(qū)分度最高的放在最左側(cè)統(tǒng)計數(shù)據(jù)行數(shù)只用count(*),別整的花里胡哨的關(guān)于in和exist,如果查詢的倆個表大小一致則性能差別可忽略,如果子查詢表大用exist,否則使用in查詢一行數(shù)據(jù)時加上limit 1選擇合理的數(shù)據(jù)類型,在滿足條件下數(shù)據(jù)類型越小越好聯(lián)合查詢join最多三個表,并且需要join的字段數(shù)據(jù)類型保持一致in操作能避免盡量避免,無法避免的情況下in元素控制在1000以內(nèi)數(shù)據(jù)更新頻繁,區(qū)分度不高的列不適合建立索引explain中的type至少要達到range,要求為ref聯(lián)合索引滿足最左側(cè)原則
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 盤點雙卡雙待雙通手機排行榜 手機雙卡雙待怎么使用
- 詳解hdd硬盤檢測工具用法 hdd檢測工具再怎么看
- 惠普1005和1005mfp區(qū)別 hp1005打印機驅(qū)動怎么安裝
- 卸載內(nèi)置軟件app 軟件卸載了怎么恢復(fù)
- 上 日本學(xué)校運動會是怎么樣的?
- 我想做電商怎么加入 如何做電商
- 秋冬頭皮出油怎么辦 秋冬頭發(fā)容易出油嗎
- 初期小疣體圖片真實 脖子上長了小肉粒怎么回事
- 啥情況用英語怎么說 怎么回事用英語怎么說
- 老人牌油漆怎么樣
