SQL SERVER 兩種聚合, STREAM AGGREGATE,HASH AGGREGATE.
哈希和排序都需要內存,哈希小表要內存,排序如果內存不足,需要臨時數據庫。
1,STREAM AGGREGATE
返回單一數值,沒有 GROUP BY,總會使用它;
如果有 GROUP BY,排序使用排序操作符或索引。
2,HASH AGGREGATE
一般應用於比較大的表,它不需要排序,在內存有一個 HASH KEYS BUILD。如果數據已經排序,計劃有可能選擇 STREAM AGGREGATE。
因此,對於沒有排序的數據,將會出現兩種情況:
SORT AND STREAM AGGREGATE,或
HASH AGGREGATE AND SORT
優化查詢器會根據開銷大小,決定採用那個。
如果查詢使用 DISTINCT,會出現三種情形:
1,STREAM AGGREGATE,如果數據已經排序;
2,HASH AGGREGATE,如果沒有排序並且表比較大,或
3,DISTINCT SORT。