mysql 四百万左右数据 count(*) 49 秒才响应,求助大佬怎么优化?

2021-07-30 11:35:10 +08:00
 edk24
EXPLAIN SELECT COUNT(*) AS tp_count FROM `fa_people_check` `people_check` LEFT JOIN `fa_people` `people` ON `people_check`.`people_id`=`people`.`id` LIMIT 1;

大佬们,像这种怎么优化字段提升查询速度。 执行一次 49s 就很离谱

10221 次点击
所在节点    MySQL
55 条回复
maxiaofeng
2021-07-30 15:03:00 +08:00
@ifconfig 盲生,你发现了华点
atom234
2021-07-30 15:11:21 +08:00
数据库是 mysql,使用 count 的话 people_check 必须要有主键,排查下 这 9 个分区的分区方式是啥,这个数据量好像也没必要分区啊。。。
还有 换 MyISAM 的话并不建议 会有事务问题。
Aruforce
2021-07-30 15:27:54 +08:00
有 where 过滤么? 不过滤 左联干啥啊
ybleak
2021-07-30 15:28:04 +08:00
这个 JOIN 我怕
rekulas
2021-07-30 16:21:38 +08:00
count(主键)会稍微快一些,当然想彻底解决只能缓存起来,count 本身很难优化,互联网巨头都没办法
hhjswf
2021-07-30 17:51:13 +08:00
几百万的数据分页好像无解啊,页数越往后越慢
Loku
2021-07-30 18:20:12 +08:00
有 9 个分区,然后 count(*)原因吧。count(`people_check`.id)吧
encro
2021-07-30 22:23:16 +08:00
写得什么鬼 SQL,
我大几千万数据 mysql 阿里云 2C4G RDS count 也就几秒啊,没分表分库。
不过对于我来说,超过 0.2 秒的 sql 是不允许存在的,所以 Count 的时候都是加了条件,保证 explain rows 不超过几千条记录的。对于统计是走聚合的。

那些还在鼓吹 myisam 的,也是一群无知,麻烦先试下是不是 Count 是否也慢?
还有说 innodb Count 慢的,能说出那个引擎 Count 不慢(包括收费的),
建议以上两类都先了解下 Count 慢的原因(原理)再开口?
采用 innodb 引擎的 mysql 工程师们都是一个傻子?丢下原来好用的 myisam 不用去全面切换为 innodb ?
商业数据库 count 快?他们是如何解决 like,in , or 等复杂条件 count 的?原理上可行吗?
rekulas
2021-07-30 22:53:57 +08:00
@encro 我们也用阿里数据库 rds polar 之类的也在用自建数据库,阿里的是做了优化感觉比原生 mysql 性能要高些,然后云数据库估计硬件配置也好所以快
abcbuzhiming
2021-07-31 11:07:18 +08:00
@encro 阿里云的 RDS 比很多人自建的快,楼上这些说性能的能把自己硬件软件配置报一下吗?楼主最好也把配置报一下,我见过有些人不懂,直接自己在云 ECS 上建 MySQL 的,他那个 ECS 还不是高性能 IO 的,那不就这个性能。要知道很多 Mysql 看起来测试性能很高,那人家那硬件动不动就是在 64 核,123G 内存,SSD 阵列,参数还优化到极致。不比你自己用 MySQL 社区版默认装的强到哪里去了
Maxwe11
2021-07-31 20:02:32 +08:00
如果不是要求实时统计,其实还有个野路子,就是为分析之类的做准备,离线一份儿 clickhouse,快到你高潮。
lizuoqiang
2021-08-02 10:08:15 +08:00
@myd 逗比
KickAssTonight
2021-08-02 11:28:10 +08:00
innodb 的 count 就是会慢
edk24
2021-08-02 17:25:43 +08:00
@KickAssTonight 正解,确实拿这个无法,因为是 innodb 关系,去除 join 也好不在哪儿去
ivanMeng
2021-08-02 17:26:10 +08:00
innodb 没有计数器。count 是遍历获得数据总数。myisam 会有计数器的。

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

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

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

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

© 2021 V2EX