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

67 阅读1分钟

本文原发布于简书(2021.09.30 14:27:23)

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

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

count(id)

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

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

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

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