sql語法中,為什么 like ‘%張三’索引會失效?
表A中欄位a上有索引indexa,查詢陳述句使用
select 列 from A where a like '%張三' 時會出現索引失效的情況?
like語法中 like '%張三'索引失效,like '張三%'索引正常?
請問一下原因
uj5u.com熱心網友回復:
以MySQL為例,欄位a上的索引實際上是B-Tree索引;B-Tree索引可以用于like查詢,但要求like后面為一個不能以%開頭的常量字串。因此,select 列 from A where a like '%張三' 時會出現索引失效的情況。
可以參見官方檔案:
https://dev.mysql.com/doc/refman/8.0/en/index-btree-hash.html
uj5u.com熱心網友回復:
索引其實就是排序,或者說排隊更直觀。like '張三%',實際你要找的是'張三XXX',只要把所有'張三'開頭的那部分內容回傳即可,這部分是連續的,不需要全表掃描。
like '%張三',實際你要找的是'XXX張三',這部分在索引里是不連續的,如果要回傳需要的結果,只能全表掃描。
uj5u.com熱心網友回復:
索引最左原則轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/69858.html
標籤:MySQL
