提问者:小点点

带有日期函数查询的mysql运行缓慢


我今天在执行查询时发现了一些奇怪的事情,我想知道这是如何发生的。

以下是我的疑问:

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万。


共1个答案

匿名用户

不要在筛选的列上使用函数。 这使得查询不可存储,这意味着数据库不能利用现有索引。 基本上,在筛选之前,您强制数据库对列中的每个值进行计算。

如果要在给定的一天进行筛选,可以使用半开区间的不等式:

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