Quick Count
使用最小覆盖索引
针对 InnoDB 表(几十万到几百万行)快速统计行数,可以有几个方法。下面按实用性和效率排序:
- 选择最窄的索引列(最好是整型或短列)进行扫描,不访问表数据页。
- 假设你有一个
updated_at
的索引:
SELECT COUNT(updated_at) FROM cert;
- 优化器会用覆盖索引,只扫描索引页,比全表扫描快很多。
- 如果想强制使用:
SELECT COUNT(updated_at) FROM cert USE INDEX (idx_updated_at);
注意:不要用
COUNT(*)
强制扫描宽索引,如果有多个索引,尽量选最窄的。 如果你用 COUNT(id)(扫描主键索引),实际上在扫描整个聚簇索引,整行数据都要经过处理。
No comments to display
No comments to display