0

TSQL で Sybase DB を使用しています。

TSQL コードの次のスニペットは非常に単純で、数 100,000 回 (大規模なデータベース) 実行する必要があるため、可能な限りパフォーマンスを改善したいと考えています。

BEGIN TRANSACTION
INSERT INTO
  DESTINATION_TABLE
SELECT
  COLUMNS
FROM
  SOURCE_TABLE
WHERE
  ORDER_ID = @orderId

DELETE FROM
  SOURCE_TABLE
WHERE
  ORDER_ID = @orderId
COMMIT TRANSACTION

ご覧のとおり、同じ条件に基づいて同じ行セットを挿入および削除しています。

この単純なクエリのパフォーマンスを向上させる方法はありますか?

ありがとう。

4

1 に答える 1

1

複数の行を挿入する場合は、一括挿入を行う必要があります。このメソッドを 100,000 回呼び出し、毎回 ID を渡すのは、線形処理の考え方です。データベースはセット操作用です。

挿入および削除する必要がある ID の一時テーブルを作成します。次に、そのテーブルの ID を結合して一括挿入を行い、同様に一括削除を行います。

于 2012-08-20T21:03:02.260 に答える