mysql根据where条件查询count(*)速度很慢(接近1千万的数据),怎么提升速度?

发布于 2021-12-05 22:55:00 字数 151 浏览 775 评论 11

表的数据接近1000万。

表结构使用了表分区的方式,共分了6个区。

页面的数据显示使用了分页,查询语句select count(*) 执行十分慢要40秒左右~~~

但是limit查询数据2秒左右就可以了,有什么方案优化一下count语句吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

因为看清所以看轻 2021-12-06 15:30:50

count(1) 只扫主键。

count(*) 扫描全表。 

英雄似剑 2021-12-06 15:30:43

select count(ID)  from  new where 1;   

count()使用主键

执手闯天涯 2021-12-06 15:30:38

这不现实啊,业务上肯定带有where的。。

爱的故事 2021-12-06 15:30:28

回复
@润群 : 大数据量下带条件的count肯定不现实。。如果是分页,建议只允许查前XX页

孤独患者 2021-12-06 15:29:07

回复
现在方案是从业务上进行了优化,只能查询指定时间内的数据了。

兮颜 2021-12-06 15:26:14

好像说count是全表查的,如果是不加条件的想要查表记录数量,有一个语句可以查

select TABLE_ROWS from information_schema.`TABLES` WHERE TABLE_NAME = '表名'

 

深巷少女 2021-12-06 15:25:59

40秒?我擦,这是变态的久了吧。估计后面的条件巨复杂。

酒几许 2021-12-06 15:16:31

这个表还要涉及事务(坑啊~

2021-12-06 15:12:55

1、用的myisam还是innodb,myisam的查询速度明显比innodb快很多。

2、能不加where条件的尽量不加。

3、索引优化

琴流音 2021-12-06 13:42:32

用explain看结果也是使用了索引哦

韬韬不绝 2021-12-06 09:55:04

用explain分析啊,看看这个结果才能看出些东西,从上面你的描述我是看不出来问题在哪

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文