如何让COUNT(*)在庞大的数据集上快速执行?

问题描述 投票:0回答:1

我有以下疑问:

select count(*) as aggregate from users where date(created_at) < '2024-04-01';

它返回

2337355
,这是一个正确的数字。但它需要
1.5
秒才能执行。知道如何让它更优化、更快吗?


注意到我在

users(created_at, type)
上有一个索引。

还尝试删除

date()
类似
where created_at < '2024-04-01';
的功能,但仍然很慢。

sql mysql performance indexing
1个回答
-1
投票

如果可能,切勿在字段的 WHERE 中使用函数。然后MySQL必须读取每一行,调用函数,然后才能与VALUE进行比较。这意味着这将始终是全表扫描,因此不能使用索引。

可能更明智,例如:

WHERE created_at BETWEEN '2024-04-01 00:00:00' AND '2024-04-01 23:59:59';

使用

© www.soinside.com 2019 - 2024. All rights reserved.