【高分求助】mysql怎么高效率地检索某段字符,like和全文检索都不行
背景:
优化一个数据库,其中一张表的记录数量已经达到20万以上,表中有一字段是查询号,由一串连在一起的数字和英文组成,如
'US2009484321A'、'US2009485222A','US2003617086A'
目的:
想让用户能够通过输入该字段的一部分去检索,比如输入’2009‘,就可以检索到'US2009484321A'和'US2009485222A',输入us则可以检索到'US2009484321A'、'US2009485222A','US2003617086A'
问题:
原先的大神写的sql语句是
SELECT DISTINCT xxx,yyy,zzz FROM table WHERE chaxunhao LIKE '%2009%' \G 执行一次要近一分钟
我一上来就explain这段sql语句,发现没有使用索引,于是给chaxunhao字段添加了普通索引
create index index_cxh on table(chaxunhao );
可是mysql在 LIKE '%xxx' 即百分号在前缀时不会使用索引。。结果效率不能提升
求大神给个可行的解决办法!
附
不能使用全文索引!
小弟曾天真的使用全文索引去搞,结果发现全文索引是针对单词的,即他会把'US2009484321A'整个看做一段字符!