SQL中的 MIN Vs MAX函数



我正在运行下面两个查询,但两者的运行时间完全不同。你能告诉我哪里出了问题吗?

下面的查询在不到20秒的时间内给出输出

select MAX(last_mod_date) last_mod_date
from dbo.raw
where prog_id like '198.A-2006%'
and dp_cat='SCIENCE'

下面的查询在5-7分钟(有时超过10分钟)给出输出

select MIN(last_mod_date) last_mod_date
from dbo.raw
where prog_id like '198.A-2006%'
and dp_cat='SCIENCE'

我试着做更新统计,重组索引,这是列last_mod_date。但我没有看到这些行动有任何好处。附件是MIN查询的执行计划。输入图片描述

在以下三列上创建复合索引:prod_id、dp_cat、last_mod_date。这将使您的查询更快:服务器将随机访问BTREE索引到前两列的正确值。然后,因为它只需要找到第三列的最小值,所以就有了查询的答案。它也将为MAX服务。它的泛化称为松散索引扫描。

至于为什么你的两个查询,没有索引,是如此不同?如果没有看到的执行计划,很难判断。实际执行计划将是最有帮助的。在SSMS中,右键单击查询窗口,选择"活动执行计划"。然后运行查询。

最新更新