最近做性能優化,發現這樣一個現象,100萬條數據量對同一個字段採用=和like ‘key%’不同的查詢方式查詢結果,結果like的查詢更快。
測試造的數據中有一個列的值塞入的是同樣的值,該列加了索引,但通過explian發現雖然是索引列但實際運行時還是全文搜索並沒有用索引。後來將該列更新成區分度較高的值,通過explian發現這時是使用了索引。
就其原因,以下有兩點觀點:
1.數據區分度不高,導致索引失效,mysql認爲全文搜索比通過索引搜索還要快;
2.查詢就是匹配字段,=key是完全匹配,like ‘key%’ 是部分匹配,匹配到key的一部分值就結束,(但‘%key%’一定是很慢的)