mysql count 查询慢分析与总结:
现象:
公司系统表A 查询count(id/*/1) 总条数时, 耗时20s. 但总条数20W条左右。
公司系统表B 查询count(id/*/1) 总条数时, 耗时3,4s. 但总条数过100W条。
分析:
同一个数据库,不同的表,条数少的查询耗时远远大于条数多的,这种现象让人感觉很诡异。
后来 查询A,B 表的存储空间发现 A 表占用空间800M左右, B表占用空间200M左右,此刻 A 表count 比B表count 耗时 可以解释通了。
进一步分析 A表,发现里面有 long text 字段,里面存储大量的数据。
试验:
把A表 long text 字段去掉,其余数据结构复制到表C. 查询表C 占用空间 30M左右, 查询count 总数 在1s 以内。
总结: