

EXPLAIN select sno from stu where sno like '%0%' ;

八竿子打不著的地方 怎么用上name索引了.
如果我把name 索引洗掉, 這個地方就會用primary 索引.
屌大的跟我講講,這是怎么了.
uj5u.com熱心網友回復:
like '%0%'這種寫法應該是不走索引的吧,like '0%'才會走索引,可以看一下下面陳述句的執行計劃加like的是不是一樣的,至于為啥選擇name上的索引,我就不太清楚了
EXPLAIN select sno from stu
uj5u.com熱心網友回復:
說出來你可能不信, 結果是一樣的.如果加上限定條件where sno , 那肯定就走primary 索引.
我猜只是用了name 索引進行讀取資料, 而沒有查找 ,
走name 索引來讀取全文資料好像也沒什么問題.
uj5u.com熱心網友回復:
沒有匹配到適合的索引時,會走主健索引,表沒主健索引走表掃描uj5u.com熱心網友回復:
換個角度講,既然都得【全列】掃描,那走不走索引,都不影響結果。而索引,至少你可以認為是只掃描一個列對吧,掃描索引,總比【全表掃描】,注意不是【全列掃描】,消耗的磁盤資源要少很多吧。
這個類似列存資料庫了。
uj5u.com熱心網友回復:
好像不是的哦. 查sno,有主鍵不走,去走了個name索引. 刪掉name索引 才走 primary .
uj5u.com熱心網友回復:
為什么是掃全表 ,而不是掃全列呢?
還有sno 的primary 優先級為什么還比sname索引低呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/135311.html
標籤:MySQL
下一篇:一道Postgresql遞回樹題
