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

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


网上资料说MySQL对count(*)做了特别的优化,按理来说应该是最快的,然而三个都不约而同的非常慢。
解决方案是,为ID加了个唯一键:

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

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