mysql根据where条件查询count(*)速度很慢(接近1千万的数据),怎么提升速度?
表的数据接近1000万。
表结构使用了表分区的方式,共分了6个区。
页面的数据显示使用了分页,查询语句select count(*) 执行十分慢要40秒左右~~~
但是limit查询数据2秒左右就可以了,有什么方案优化一下count语句吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
count(1) 只扫主键。
count(*) 扫描全表。
select count(ID) from new where 1;
count()使用主键
这不现实啊,业务上肯定带有where的。。
回复
@润群 : 大数据量下带条件的count肯定不现实。。如果是分页,建议只允许查前XX页
回复
现在方案是从业务上进行了优化,只能查询指定时间内的数据了。
好像说count是全表查的,如果是不加条件的想要查表记录数量,有一个语句可以查
40秒?我擦,这是变态的久了吧。估计后面的条件巨复杂。
这个表还要涉及事务(坑啊~
1、用的myisam还是innodb,myisam的查询速度明显比innodb快很多。
2、能不加where条件的尽量不加。
3、索引优化
用explain看结果也是使用了索引哦
用explain分析啊,看看这个结果才能看出些东西,从上面你的描述我是看不出来问题在哪