特定のクエリを見ずに確実に判断するのは難しいですが、GROUP BY に含まれる列の数を最小限に抑え、それらの列を内部クエリの結合で解決することにより、(少なくとも SQL2K では) 驚くべきパフォーマンスの向上を実現していました。具体的には、OrderDetails (OrderID、ProductID、Quantity、Price) テーブルと Products (ProductID、ProductName) テーブルを分類しているとします。このクエリの変更:
select P.ProductID, ProductName, sum(Quantity * Price)
from Products as P
inner join OrderDetails as OD on P.ProductID = OD.ProductID
group by P.ProductID, ProductName
これに:
select X.ProductID, PP.ProductName, X.OrderValue
from
(
select P.ProductID, sum(Quantity * Price) as OrderValue
from Products as P
inner join OrderDetails as OD on P.ProductID = OD.ProductID
group by P.ProductID
) as X
inner join Products as PP on X.ProductID = P.ProductID
整数インデックスでのグループ化は、テキスト値の並べ替えられていない製品名でのグループ化よりも高速であるため、同じテーブルへの 2 つの結合にもかかわらず、パフォーマンスが向上します。