百万级别数据模糊查询优化 [ 2.0 版本 ]
最近在做个项目,里面有个数据表,数据多达100W条,需求是通过编号code或者name来查询到相关数据,但是都是模糊查询,每次查询都得花上4秒左右,分页后点击下一页也得4秒,太慢了,用的like查询,各位大佬有什么办法可以快一点吗
共 8 个回答
-
才一百万并不是很大!没有必要加什么所以插件!加上去了 插件需要配置还需要维护!100万就卡成狗,那说明,你们的硬件是真的不行了!首先你们用的是自建的mysql吗!
共 3 条回复zcx147716565 回复于 2018-12-10 17:02 回复是的,自建的。。。
@zcx147716565 那就不要麻烦了!100万数据真的不多!根本不需要优化整那么麻烦! 你可以给公司建议一下,使用阿里云的数据库!可以升级的,用的是固态盘!一键就解决了!
zcx147716565 回复于 2018-12-13 10:31 回复@一种文化 好的,非常感谢大佬
-
100万而已 如果增量不是特别大的话 同时你这俩字段是char、varchar和text类型的话,可以试试mysql原生的fulltext索引,无附加组件,少量修改代码就可完成模糊搜索。如果增量很大,频率很高,可以尝试第三方组件,比如es、sphinx之类。我个人经验告诉我,如非特别必要,尽量保持技术栈的简单,不然就是运维地狱。
共 5 条回复zcx147716565 回复于 2018-12-10 17:07 回复了解了,我今晚试试,谢谢大佬
zcx147716565 回复于 2018-12-10 21:53 回复大佬,试了fulltext没用。。主要是我的模糊查询,可能每次会取几千条数据出来。。。感觉还是太慢了
zcx147716565 回复于 2018-12-11 09:25 回复@bzzear 因为是模糊查出来一些数据,再让管理员去选择,现在搞定了
@zcx147716565 可以根据搜索先取ID,然后根据分页取全部结果,一次性取全部内容,消耗都在io上了,肯定慢。
-
对于大量数据的模糊查询,使用 LIKE 查询是比较慢的,因为它需要扫描整个数据表。以下是几种可以优化查询速度的方法: 使用全文本索引:如果您使用的是 MySQL 或者 PostgreSQL,可以考虑使用全文本索引来加速模糊查询。全文本索引可以在查询时快速定位到匹配的文本,从而提高查询速度。 使用缓存:如果您的数据表不经常更新,可以考虑使用缓存来提高查询速度。例如,将查询结果缓存在 Redis 或 Memcached 中,下次查询时从缓存中读取结果,而不是每次都重新查询数据库。 数据分片:如果您的数据表非常大,可以考虑将数据分片存储在多个服务器上,每次查询只查询相关分片,以减少查询时间。 数据库优化:您可以对数据库进行优化,例如添加索引、分区、使用存储过程等来提高查询速度。 使用搜索引擎:如果您需要更高级的搜索功能,可以考虑使用专业的搜索引擎,例如 Elasticsearch 或 Solr。这些搜索引擎可以对文本进行高级搜索和分析,可以快速返回匹配的结果。 以上是一些可行的方案,您可以根据具体情况进行选择。
zcx147716565 广州
注册时间:2017-03-10
最后登录:2021-01-12
在线时长:69小时38分
最后登录:2021-01-12
在线时长:69小时38分
- 粉丝9
- 金钱12500
- 威望20
- 积分13390