mysql 带日期函数查询 运行 慢

mysql with date function query running slow

我今天在执行查询时发现了一些奇怪的东西,我想知道这是怎么发生的。

下面是我的查询:

select sum(price) as total from table_a where testing_date = '2020-06-10' 

此查询在搜索数据时需要 2-5 秒。现在我在查询中做了如下小改动:

select sum(price) as total from table_a where date(testing_date) = '2020-06-10' 

在这种情况下查询需要 2-3 分钟。这里的 testing_date 列数据以 dateTime 格式为例:2020-06-01 00:00:00

此处总记录大小超过 700 万条。

不要在筛选所依据的列上使用函数。这使得查询不可 SARGeable,这意味着数据库无法利用现有索引。基本上,您是在强制数据库在 列中的每个值上进行计算,然后 进行过滤。

如果要在给定的日期进行过滤,可以使用半开区间的不等式:

where testing_date >= '2020-06-10' and testing_date < '2020-06-11'