0

以下のコードがあります..更新列にインデックスを作成すると、クエリは高速になりますか?

CREATE NONCLUSTERED INDEX tmp ON #TestTable (  
  jobid,   
  RecordGroup,
  RecordSubGroup,
  OpenDate   
) 

UPDATE #TestTable   
   SET OpenDate = OB.col1  
     , OpenWrap = OB.col2  
     , OpenBalance = OB.col3  
  FROM #TestTable ST  
  JOIN JobRecordOut OB ON OB.JobId = ST.JobId  
                      AND OB.RecordGroup = ST.RecordGroup  
                      AND OB.RecordSubGroup = ST.RecordSubGroup  
                      AND OB.RecordType = 'OB'  

DROP INDEX tmp ON #TestTable
4

1 に答える 1

3

それは™に依存します。

オプティマイザーがインデックスが役立つと判断した場合、インデックスはレコードの検索を高速化するためにのみ機能します。インデックスがあるからといって、それが使用されるとは限りません。より具体的な情報を提供できるように作成されたとき、データベース、nevermindバージョンは指定されていませんでした。

インデックスが追加/変更される値に関連している場合、インデックスは挿入/更新操作を遅くします。これが、インデックスを維持する必要がある理由です。インデックスは断片化される可能性があるため、完全に再構築しない場合でも「デフラグ」が必要になります。インデックスを完全に再作成する方が費用効果が高い場合があります。これは、データとデータの量によって異なります。

インデックスに関しては、自分で試してテストする必要があります。彼らには「特効薬」/魔法の答えはありません。

于 2013-01-07T04:39:47.837 に答える