(–本文是个人学习和使用过程中的总结,如有错误欢迎指正。转载请注明出处)
常听到有关teradata中DISTINCT和GROUP BY那个性能更好的问题,是应该用
SELECT COLUMN GROUP BY 1
还是
SELECT DISTINCT COLUMN呢?
为了确定什么情况用DISTINCT,什么情况用GROUP BY,首先我们应该理解两者的工作方式。
DISTINCT :数据会被直接分布(distributed )到AMPs并去重
GROUP BY:会在每个AMP上首先做分组,然后再将数据分布到AMPs上做二次去重
理解了两者的不同我们可以根据下面的规则选择:
假设我们的数据有很很多不同的值选择DISTINCT 可能更好
假设我们的数据不同的值很少,首先在本地做去重就减少重分布的row,此时我们选择GROUP BY可以更好
——————————————————————————————————————————————————————————————–
不错在我们以前使用的teradata中确实如此,那么在新版本(TD 15)中真的也是这样么?
在此那了一张我们的表做了实验
Tables count(*) | DISTINCT/GROUP BY的列 | DISTINCT OR GROUP BY | DISTINCT/GROUP BY以后的值 | 耗时(s) |
---|---|---|---|---|