我有以下疑问:
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';
的功能,但仍然很慢。
如果可能,切勿在字段的 WHERE 中使用函数。然后MySQL必须读取每一行,调用函数,然后才能与VALUE进行比较。这意味着这将始终是全表扫描,因此不能使用索引。
可能更明智,例如:
WHERE created_at BETWEEN '2024-04-01 00:00:00' AND '2024-04-01 23:59:59';
使用