消除SORT运算符

时间:2016-05-26 19:39:03

标签: sql-server sql-server-2012 sql-execution-plan

抓住我的头。我已经测试了几个不同的索引,似乎无法摆脱这种排序运算符。它超过500万行的成本的53%。它需要花费很长时间才能运行,因此我希望索引可以提供帮助。

查询:

select  Client_ID
      , first_value(LOB_Code) over(partition by Service_VisitID order by member_dim_key desc)           as LOB_Code
      , MMI 
      , Service_Date
      , Service_YearMonth
      , Service_Billing_Provider_ID
      , isnull(Service_Billing_Provider_TIN,'') as service_Billing_Provider_TIN
      , Service_Rendering_Provider_ID               
      , isnull(Service_Rendering_Provider_TIN,'') as Service_Rendering_Provider_TIN
      , Service_Key
      , Diagnosis_Group_Key
      , Service_VisitID
      , NPI
      , row_number() over(partition by Service_VisitID order by service_total_paid_amt desc) as Row_N
from #SpecAttrib

我在Service_VisitID和Member_Dim_Key上创建了一个索引,它消除了一个问题排序,并认为相同的策略适用于这个。

我已经尝试了以下两个 - 我期望的第一个工作,第二个只是为了它的地狱:

create nonclustered index ix_specattrib_visit_paid on #specAttrib ([Service_VisitID] asc,[Service_Total_Paid_amt] desc)

create nonclustered index ix_specattrib_visit_paid on #specAttrib ([Service_Total_Paid_amt] desc, [Service_VisitID] asc)

以下是排序运算符的属性。

enter image description here

0 个答案:

没有答案