MySQL使用count(*)命令慢的解决方案

MySQL使用count(*)命令慢的解决方案,第1张

笔者目前在负责一个简单的Spring Boot项目,该项目有一个 *** 作日志的功能。在分页查询 *** 作日志时,需要查询日志的记录数。日志记录也不大,23W左右,比起其他大项目一两百W,少很多了。但是,令人困惑的是,使用count(*)查询总数时,总是十分缓慢,在20s左右,使得打开 *** 作日志非常慢。

于是我改成了count(1)、count(id),然而都不行。

网上资料说MySQL对count(*)做了特别的优化,按理来说应该是最快的,然而三个都不约而同的非常慢。

解决方案是,为ID加了个唯一键:

之后再使用count(*)便能正常查询了:

对于这个问题的原因,依旧没能想明白为什么。欢迎大家相互讨论~

能具体点吗?快慢很可能只是个人感受,即使给出精确时间还要考虑硬件性能才能确定快慢。有些查询就是很慢的,你这个50万主表加4K驱动表对于MYSQL来说也算是很经典的了。至于优化,如果你就是想查count,就根本没必要做关联查询select count(*) from A where EXISTS (......) 这是两表的 count(主键) count(*) count(0) 速度上你就当没区别就好了,不要迷信某些教条的东西a b 调换一下位置试试SELECT count(*) FROM b LEFT JOIN c ON (b.c_id = c.c_id)LEFT JOIN a ON (b.b_id = a.b_id)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8706637.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存