吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 320|回复: 3
收起左侧

[其他求助] mysql多字段模糊查询速度慢如何解决?

[复制链接]
kxyang 发表于 2024-5-7 21:35
25吾爱币
普通索引 mysql多字段模糊查询速度慢
求助哪种索引类型查询速度会更快
模糊匹配用户名其中的部分内容和用户ID的部分内容,数据量大的时候匹配很慢
select*from table where username like '%红%' and userid like '%678%';

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Main91 发表于 2024-5-7 22:34
MySQL查询中使用模糊匹配(LIKE 语句)以及多字段查询确实会对查询性能造成影响。优化的方法可以考虑以下几种:
使用全文索引(Full Text Indexes):跟其他类型索引有所不同,全文索引适用于需要在一列或者多列中匹配文字的场景。它对 LIKE 'xxx%' 这样的查询优化效果很好,但是对 '%xxx%' 这样的查询优化有限。
使用索引优化前缀索引:MySQL 支持对字符串的左边部分进行索引,这称为前缀索引。尽管对于 '%xxx%' 的查询优化不明显,但你可以尝试创建索引优化 LIKE 'xxx%' 的查询。
优化数据模式:对于一些常用的查询,你可以考虑在写入数据时就把查询的部分数据提前计算出来存储。比如,将常用的查询条件合并到一列保存,然后对这一列进行索引和查询。
减少查询的数据量:尽可能地减少查询需要查找的数据量,例如只查询最近的数据,或者按某种逻辑分区来查询。
使用更有效的数据库管理工具:某些数据库管理工具如 Elasticsearch 等,非常适合做全文搜索和模糊匹配搜索,你可以将一些搜索压力分散到这类工具上。
开创者 发表于 2024-5-8 08:58
提前拆分到表里。这样应该会更快一些。
几百万应该没有问题
njbb888 发表于 2024-5-8 09:22
本帖最后由 njbb888 于 2024-5-8 09:23 编辑

你这种:select*from table where username like '%红%' and userid like '%678%';  索引失效,执行计划走的都是全表扫描,数据越多越慢。

MySQL在这方面做的比较差点, 5.7+ 以上的版本,可以通过创建虚拟列,实现 like '%XXXX%' 走索引。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-6-2 22:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表