2012-04-19 18 views
6

インデックスのシーク(クラスタ化されていない)が合計実行時間の約93%を占めるクエリがあります。非クラスタ化インデックスのパフォーマンスを向上させるシーク

クエリの実行計画では、インデックスシークの推定行数は1であり、実際の行数は209です。これが問題であるかどうか。

クラスタ化されていないインデックスシークのパフォーマンスを向上させる方法。一般的な答えが役に立つでしょう。

実行計画: enter image description here

そして次は、私が最初にすべての関係者の統計情報を更新する時になり、

SELECT TOP 11 DVPR1.IncidentID, DVPR2.IncidentID, Rel.ID, PER1.[LastName], PER1.[FirstName] 
FROM 
    DV_PHPersonalRecord DVPR1 
INNER JOIN Relationship Rel 
    ON Rel.source_Id = DVPR1.RowId 
    AND Rel.typeCode = 'RPLC' 
INNER JOIN DV_PHPersonalRecord DVPR2 
    ON DVPR2.RowId = Rel.target_Id 
INNER JOIN [T_Attribute] (nolock) 
    ON [T_Attribute].[ActRelationship_ID] = Rel.[ID] 
    AND [T_Attribute].[name] = 'MergeFlag' 
    AND ([T_Attribute].[valueString_Code] = 'pending') 
INNER JOIN [Person] PER1 (nolock) 
    ON DVPR1.[PersonDR]=PER1.[RowID] 
INNER JOIN [Person] PER2 (nolock) 
    ON DVPR2.[PersonDR]=PER2.[RowID] 
WHERE 
    DVPR1.TypeDR = 718990 
    AND 
    (PER1.[Code_ID] IS NULL OR (PER1.[Code_ID] = '6516' 
          AND PER1.[OptionsCode_ID] = '6522') 
    ) 
    AND 
    (PER2.[Code_ID] IS NULL OR (PER2.[Code_ID] = '6516' 
           AND PER2.[OptionsCode_ID] = '6522') 
    ) 
ORDER BY PER1.[LastName] ASC, 
     PER1.[FirstName] ASC 
+0

クエリにはどのくらいの時間がかかりますか?なぜあなたは問題があると思いますか? – Tomalak

+0

クエリは約14秒かかります...要件は3秒で完了する必要があります –

+3

実行計画とクエリを投稿できますか? –

答えて

12

は、私が期待される行と実際の行との間のこのような矛盾を参照すると、クエリですテーブル。

クエリオプティマイザはこれを自動的に行うことになっていますが、時にはメリットがあります。

通常、これにはDBAタイプの権限が必要です。

アップデート統計情報のMicrosoftページをご覧ください。

http://msdn.microsoft.com/en-us/library/ms187348.aspx

+0

+ 1は、クラスタード・インデックス・シークの改善方法について非常に便利でiluminatingなリンクを提供します。私のクエリは、統計を更新した直後に1分49秒から3秒間に多くのパフォーマンスを得ました。ありがとうGregHNZ! – G21

関連する問題