1 sql-server sorting sort-operator
我正在运行一个查询并且执行它需要很长时间,查看执行计划我可以看到 51% 的成本在 SORT 中?在实际查询中,我没有按任何东西排序。
任何人都知道如何降低此排序百分比或将其全部删除?这是我正在运行的查询。
SELECT Time_ID,
Site_Type_ID,
Abandoned_ID,
WorkType_ID,
SUM (staging.dbo.measure.ring_time) AS Ring_Time,
SUM (staging.dbo.measure.hold_time) AS Hold_Time,
SUM (staging.dbo.measure.talk_time) AS Talk_Time,
SUM (staging.dbo.measure.acw_time) AS ACW_Time,
COUNT(*) CallCount
FROM measure
INNER JOIN DataMartEnd.dbo.Time_Dim
ON measure.StartTimeDate BETWEEN Time_Dim.Time_Start AND Time_Dim.Time_End
INNER JOIN datamartend.dbo.Site_Type_Dim
ON measure.DBID = Site_Type_Dim.Site_Type_Code
INNER JOIN datamartend.dbo.Abandoned_Call_Dim
ON measure.Abandoned = Abandoned_Call_Dim.abandoned_value
INNER JOIN DataMartEnd.dbo.Work_Type_Dim
ON measure.DBID = work_type_dim.MIG_Site_ID
AND Work_Type_Dim.Work_Type_Code = measure.Queue
AND measure.StartTimeDate BETWEEN Work_Type_Dim.DimEffectiveStartDtm AND Work_Type_Dim.DimEffectiveEndDtm
GROUP BY Abandoned_ID,
WorkType_ID,
Site_Type_ID,
time_id
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助。
Group by Abandoned_ID, WorkType_ID , Site_Type_ID, time_id
Run Code Online (Sandbox Code Playgroud)
实现 group by 的一种方法是对输入进行排序。流聚合 Showplan 运算符:
Stream Aggregate 运算符需要按其组内的列排序的输入。如果数据由于先前的 Sort 运算符或由于有序索引查找或扫描而尚未排序,则优化器将在此运算符之前使用 Sort 运算符。
QED。
进一步阅读:关于Stream Aggregate和替代Hash Aggregate 的Craig Freedman 博客条目。
归档时间: |
|
查看次数: |
4062 次 |
最近记录: |