例如現在有這樣一個mysql語句:
select * from city where city_name like '%hf%' order by created_at;
這樣的sql語句如何建立索引呢,如果是建立複合索引,使用:
key(created_at,city_name)
這個由於created_at在前面,根據索引的最左匹配原則退化成了key(created_at).
key(city_name,created_at)
肯定也不行,前面是模糊查詢,這個複合索引退化成了key(city),那麼這種情況只能建立單一的索引列來解決問題嗎?
請教各位大大.
前後都是%是不走索引的,都沒有索引退化的問題,要么改sql成前綴匹配要么加全文索引(對於短字符串並不合適),再有就是對於這種基本不變的數據在應用程式裡面是可以放到搜尋引擎裡的,可以利用它的分詞器檢索