T-SQL 查詢優化之聚合

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。

 

 

 

 

 

 

 

 

 

發佈了154 篇原創文章 · 獲贊 11 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章