哪个更好,在GROUP BY中使用多列,在AGGREGATE中使用GROUP BY?

时间:2014-11-18 06:49:09

标签: sql sql-server

我有一张酒店表,

hotelId  | hotelName  | city
=============================
h1       |   name1    | city1
h1       |   name1    | city2
h2       |   name2    | city3
h2       |   name2    | city4
h3       |   name3    | city5
h4       |   name3    | city6

如果我想查询唯一的hotelId and nameHotelId and HotelName will always be same),这是更好的查询?

使用多个分组

Select hotelId, hotelName from Hotel 
Group By HotelId, HotName

使用Group By With Aggregate

Select HotelId, Max(hotelName) from Hotel
Group By HotelId

2 个答案:

答案 0 :(得分:2)

这个怎么样?

select distinct hotelId, hotelname from hotel

答案 1 :(得分:0)

我觉得OP在性能观点上询问是不是OP?如果是的话:

由于上面的查询(OP)不需要告诉我们上面的查询(OP)有不同的用途,但在某些情况下我们可以使用聚合函数,就像你在这里使用MAX()一样。为了这个目的。如果您查看执行计划,您可能会看到哈希聚合,而且成本很低。所以你的第二个查询更好。通过大量数据可以看到性能。

现在我来选择所有列的不同或分组 就性能观点而言,两者都会产生相同的计划,但不同的是对所有列进行分组。