W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
我們使用EXPLAIN解析SQL執(zhí)行計劃時,如果有下面幾種情況,就需要特別關(guān)注下了:
首先看下 type 這列的結(jié)果,如果有類型是 ALL 時,表示預(yù)計會進(jìn)行全表掃描(full table scan)。通常全表掃描的代價是比較大的,建議創(chuàng)建適當(dāng)?shù)乃饕ㄟ^索引檢索避免全表掃描。此外,全索引掃描(full index scan)的代價有時候是比全表掃描還要高的,除非是基于InnoDB表的主鍵索引掃描。
再來看下 Extra 列的結(jié)果,如果有出現(xiàn) Using temporary 或者 Using filesort 則要多加關(guān)注:
Using temporary,表示需要創(chuàng)建臨時表以滿足需求,通常是因?yàn)镚ROUP BY的列沒有索引,或者GROUP BY和ORDER BY的列不一樣,也需要創(chuàng)建臨時表,建議添加適當(dāng)?shù)乃饕?/p>
Using filesort,表示無法利用索引完成排序,也有可能是因?yàn)槎啾磉B接時,排序字段不是驅(qū)動表中的字段,因此也沒辦法利用索引完成排序,建議添加適當(dāng)?shù)乃饕?/p>
Using where,通常是因?yàn)槿頀呙杌蛉饕龗呙钑r(type 列顯示為ALL 或 index),又加上了WHERE條件,建議添加適當(dāng)?shù)乃饕?/p>
暫時想到上面幾個,如果有遺漏,以后再補(bǔ)充。
其他狀態(tài)例如:Using index、Using index condition、Using index for group-by 則都還好,不用緊張。
更多詳情請看官方文檔:8.8.2 EXPLAIN Output Format
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: