0

非常に長時間実行されているプロセスのトラブルシューティングを行っています。この select ステートメントは 30 分以上実行されます。さまざまな部分をコメントアウトすると、非常に高速に実行されます。問題を引き起こしていると思われるテーブルの横に * を配置しました。** が 2 つあるテーブルには、Empid と ChangeDate にクラスター化インデックスがあります (これらの列は互いに隣り合っていません)。これらのテーブルには 3000 を超える行があります。いくつかの簡単な微調整帽子を作成する必要があることを願っています. ソース テーブルで確認する必要があるものはありますか? 任意の提案をいただければ幸いです。「単一のステートメントで複数のアウト結合」をグーグルで検索しましたが、うまくいきませんでした。トラブルシューティングの目的で、with(nolock) を入れました。

select 
je.EmpID, 
max(med.ChangeDate) as Max_Medical_ChangeDate,  
max(den.ChangeDate) as Max_Dental_ChangeDate,
max(k.ChangeDate) as Max_401K_ChangeDate,
max(ltd.ChangeDate) as Max_LTD_ChangeDate,
max(std.ChangeDate) as Max_STD_ChangeDate,
max(life.ChangeDate) as Max_Life_ChangeDate,
max(sal.ChangeDate) as Max_Salary_ChangeDate,
max(ltdexe.ChangeDate) as Max_LTDEXE_ChangeDate
max(accid.ChangeDate) as Max_Accid_ChangeDate,
max(cancr.ChangeDate) as Max_Cancr_ChangeDate,
max(hosp.ChangeDate) as Max_Hosp_ChangeDate
from Judge_Emp je WITH(NOLOCK)
           left join Medical med on je.EmpID = med.EmpID 
           left join Dental den on med.EmpID = den.EmpID 
           left join R401K k on den.EmpID = k.EmpID 
           left join STDIns std on k.EmpID = std.EmpID 
           left join LTDIns ltd on std.EmpID = ltd.EmpID 
        *   left join LTDEXEIns ltdexe on ltd.EmpID = ltdexe.EmpID 
      **   left join LifeIns life on ltdexe.EmpID = life.EmpID 
        *  left join Salary sal on life.EmpID = sal.EmpID 
       left join AF_Accid accid on accid.EmpID=sal.EmpID
       left join AF_Cancr cancr on cancr.EmpID=accid.EmpID
       left join AF_Hosp hosp on hosp.EmpID=cancr.EmpID
group by je.EmpID

ありがとう

4

1 に答える 1