【发布时间】:2020-01-15 04:45:48
【问题描述】:
我们有一个包含数百万条目的大表。完整计数非常慢,请参见下面的代码。这对于 MySQL InnoDB 表来说很常见吗?没有办法加速吗? 即使使用查询缓存,它仍然“慢”。 我也想知道,为什么 2.8 个 mio 条目的“通信”表的计数比 4.5 个 mio 条目的“事务”表的计数慢。
我知道使用 where 子句会快得多。我就是想知道性能不好是不是正常。
我们使用的是带有 m4.xlarge(4 个 CPU、16 GB RAM、500 GB 存储)的 Amazon RDS MySQL 5.7。我也已经尝试过具有更多 CPU 和 RAM 的更大实例,但查询时间没有太大变化。
mysql> SELECT COUNT(*) FROM transaction;
+----------+
| COUNT(*) |
+----------+
| 4569880 |
+----------+
1 row in set (1 min 37.88 sec)
mysql> SELECT COUNT(*) FROM transaction;
+----------+
| count(*) |
+----------+
| 4569880 |
+----------+
1 row in set (1.44 sec)
mysql> SELECT COUNT(*) FROM communication;
+----------+
| count(*) |
+----------+
| 2821486 |
+----------+
1 row in set (2 min 19.28 sec)
【问题讨论】:
标签: mysql performance innodb mysql-slow-query-log