GROUP BY -ing 在 +1 的日期有什么作用?
What does GROUP BY -ing on a date with +1 do?
我在分析别人的代码时偶然发现了这样的查询:
SELECT ...
FROM ...
GROUP BY date_field + 1
此查询与以下查询有何不同?
SELECT ...
FROM ...
GROUP BY date_field
如果两个查询的结果相同,它们在性能方面是否不同?提前致谢。
逻辑上没有区别。原始代码可能是这样的:
select date_field + 1, . . .
from . . .
group by date_field + 1;
group by
键然后直接匹配 select
中的表达式。然而,这不是必需的。 SQL支持group by
键上的表达式,+ 1
不影响结果。
但是,它可能 会影响执行计划。我对 Teradata 中的优化引擎不是很熟悉,但我想到了两件事:
- 引擎可能无法识别它可以在
date_field
上使用索引。
- 引擎可能会对聚合列的统计信息感到困惑,选择次优的聚合算法。
我在分析别人的代码时偶然发现了这样的查询:
SELECT ...
FROM ...
GROUP BY date_field + 1
此查询与以下查询有何不同?
SELECT ...
FROM ...
GROUP BY date_field
如果两个查询的结果相同,它们在性能方面是否不同?提前致谢。
逻辑上没有区别。原始代码可能是这样的:
select date_field + 1, . . .
from . . .
group by date_field + 1;
group by
键然后直接匹配 select
中的表达式。然而,这不是必需的。 SQL支持group by
键上的表达式,+ 1
不影响结果。
它可能 会影响执行计划。我对 Teradata 中的优化引擎不是很熟悉,但我想到了两件事:
- 引擎可能无法识别它可以在
date_field
上使用索引。 - 引擎可能会对聚合列的统计信息感到困惑,选择次优的聚合算法。