0

以下のSQL構文

    DELETE V From Table1 V
INNER JOIN Table2 AS A ON A.Col1 = V.Col1 AND A.Col2 = V.Col2
AND A.Col3 = V.Col3 And A.Col4 = V.Col4
AND A.Col5 = V.Col5 AND A.Col6 = V.Col6

表 1 の情報:

  1. 行: 32,00,000
  2. NonClust_Index1_Col1
  3. NonClust_Index2_Col2
  4. NonClust_Index3_Col3
  5. NonClust_Index4_Col4
  6. NonClust_Index5_Col5
  7. クラスタ インデックスと主キーなし

表 2 の情報:

  1. 行数: 50,000

  2. NonClust_Index1_Col1_Col2_Col3_Col4_Col5_Col6 (6 列の非クラスタ複合インデックス)

  3. Clust_Index2_Col1_Col2_Col3_Col4_Col5_Col6 (6 列のクラスター複合インデックス)

この単純な削除構文 (削除構文はトランザクション スコープにあります) で TempDB のサイズが大きくなる (>200GB) 理由を特定するのを手伝ってください。

4

1 に答える 1

0

ここでのクエリパフォーマンスに関する提案:

Table2 にすべての列に対して単一の非クラスター化インデックスがある場合、それはそのインデックスの最初の列にのみ使用され、残りの列には使用されません。

したがって、table1 で作成したのと同じ方法でインデックスを作成できると思います。

于 2012-09-07T06:06:01.513 に答える