故事背景:
有一張用戶級表,數據量在千萬級別,而運營人員要查看這張表,其中有一項查詢條件為根據“錯誤類型”(單值)查出所有包含這個類型的數據,而這個數據類型在數據庫存放的方式類似於 “1,2,3,4,5,6,8,9,10,7,11,12” 無序。於是有了如下sql。

1 select count(mistake_type) 2 from mitake_table 3 where (r.mistake_type = '1' 4 OR r.mistake_type LIKE '%,1' 5 OR r.mistake_type LIKE '1,%' 6 OR r.mistake_type LIKE '%,1,%')
like剖析:
基於上述案例,查證度娘,關於like有如下說法:
前提,查詢字段建立索引
- 字段 like ‘%關鍵字%’ 不走索引,速度最慢
- 字段 like ‘關鍵字%’ 使用字段進行升序索引
- 字段 like ‘%關鍵字’ 使用字段進行降序索引
那么問題來了,針對這起事故,你有什么好的解決辦法呢????????