MySQL 单表三千万条数据,怎么优化 count 查询?

2020-09-29 10:38:41 +08:00
 CodeXx

innodb,20 来个字段,每天有几十万条数据插入,在不做分表的情况下,怎么优化查询?现在是 count 查询很慢,5s 左右,带上查询条件比如近一个月就更慢了 10 多 s

5877 次点击
所在节点    数据库
46 条回复
ragnaroks
2020-09-29 17:10:07 +08:00
做个同步的从库,统计类需求从从库查,不影响主库业务
vus520
2020-09-29 17:11:57 +08:00
1,能不 count 就不 count
2,Mysql 有触发器,能不能插入的时候写到其它某个 value 上
3,缓存神器你值得拥有
liyunlong41
2020-09-29 17:18:03 +08:00
加索引应该也要扫描索引树吧。
插入的时候更新 count,似乎会影响插入效率。
将数据同步到其他数据库例如 es 或者从库,查询从这些里面查好像不错。
定时任务周期性的计算 count 也可以,查询时直接用结果,也是有一定的时延。
everhythm
2020-09-29 18:25:34 +08:00
1.索引 or 各种缩小量级的方法对 count 有效,所以最近一个月的 count 你可以优化


2.来吧业务查询中间件,把 query 拆分为若干 subquery,再分发到不同实例,最后汇总,但是到这一步已经快超出 rds 范畴了,查询速度还不能接受的话考虑其他方式
lidashuang
2020-09-29 20:59:42 +08:00
@CodeXx 分页查询用 我之前都是去掉 count😄
xuewuchen
2020-09-30 10:47:06 +08:00
索引吧。。。LAST ID

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/711478

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX