普通索引 mysql多字段模糊查询速度慢 求助哪种索引类型查询速度会更快 模糊匹配用户名其中的部分内容和用户ID的部分内容,数据量大的时候匹配很慢 select*from table where username like '%红%' and userid like '%678%'; 多字, 速度慢
MySQL查询中使用模糊匹配(LIKE 语句)以及多字段查询确实会对查询性能造成影响。优化的方法可以考虑以下几种: 使用全文索引(Full Text Indexes):跟其他类型索引有所不同,全文索引适用于需要在一列或者多列中匹配文字的场景。它对 LIKE 'xxx%' 这样的查询优化效果很好,但是对 '%xxx%' 这样的查询优化有限。 使用索引优化前缀索引:MySQL 支持对字符串的左边部分进行索引,这称为前缀索引。尽管对于 '%xxx%' 的查询优化不明显,但你可以尝试创建索引优化 LIKE 'xxx%' 的查询。 优化数据模式:对于一些常用的查询,你可以考虑在写入数据时就把查询的部分数据提前计算出来存储。比如,将常用的查询条件合并到一列保存,然后对这一列进行索引和查询。 减少查询的数据量:尽可能地减少查询需要查找的数据量,例如只查询最近的数据,或者按某种逻辑分区来查询。 使用更有效的数据库管理工具:某些数据库管理工具如 Elasticsearch 等,非常适合做全文搜索和模糊匹配搜索,你可以将一些搜索压力分散到这类工具上。