mysql模糊查询优化
mysql模糊查询优化
一、合理使用索引
如下SQL举例:
SELECT username,age FROM WHERE username LIKE ‘hysen%’
如果username字段有索引,前缀匹配会走索引,如 ‘%hysen’或’%hysen%’ 则无法走索引。
二、使用反向索引
对于需要使用后缀匹配的情况(如:‘%hysen’或’%hysen%’ ),可以创建一个辅助列 用来存储反转字符串,并基于此列进行前缀匹配(如此则相对于非反转字符串的后缀匹配),以此来实现该需求
ALTER TABLE users ADD reversed_username VARCHAR(255);
UPDATE users SET reversed_username =REVERSE(username);
CREATE INDEX idx_reversed username ON users(reversed_username);
三、限制扫描范围
在LIKE查询中,如果可以通过其他条件进一步缩小查询范围,则尽量先缩小范围,再进行LIKE查询 如
SELECT username FROM users WHERE age >=‘18’ AND username LIKE
hysen%';
四、使用全文本搜索引擎
使用全文本搜索引擎:对于需要模糊匹配的查询,可以考虑使用全文本搜索引擎,如MySQL的全文本搜索功能或者Elasticsearch、Solr、Sphinx等,来提高查询效率