首頁  >  問答  >  主體

mysql最佳化 - mysql 模糊查詢和order by同用如何建立索引?

例如現在有這樣一個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),那麼這種情況只能建立單一的索引列來解決問題嗎?
請教各位大大.

高洛峰高洛峰2656 天前901

全部回覆(1)我來回復

  • 仅有的幸福

    仅有的幸福2017-06-14 10:52:40

    前後都是%是不走索引的,都沒有索引退化的問題,要么改sql成前綴匹配要么加全文索引(對於短字符串並不合適),再有就是對於這種基本不變的數據在應用程式裡面是可以放到搜尋引擎裡的,可以利用它的分詞器檢索

    回覆
    0
  • 取消回覆