MySQL COUNT 哪个最快

FreeGuideOnline 最新 2026-07-04

sql ALTER TABLE your_table ADD INDEX idx_small (tinyint_column);


或者用一个数字列甚至一个固定值列。后续的 `COUNT(*)` 会自动选择这个最“瘦”的索引,扫描页数大幅降低。

### 2. 使用缓存计数器(汇总表)

对于需要频繁获取精确行数的大表,可以在业务层维护一张统计表:

```sql
CREATE TABLE table_counts (
    table_name VARCHAR(50) PRIMARY KEY,
    cnt BIGINT NOT NULL DEFAULT 0
);

配合触发器或应用程序逻辑,在 INSERT/DELETE 时同步更新 cnt,使 SELECT cnt FROM table_counts WHERE table_name = 'xxx' 变成毫秒级点查。代价是写入时会多一次更新操作。

3. 使用近似计数(SHOW TABLE STATUS)

如果允许一定误差,可以直接读取表的统计信息:

SHOW TABLE STATUS LIKE 'your_table';