SQL Serverに2つのテーブルがあり、そのうちの1つは別のテーブルへのMERGE操作のソースです。マージステートメントの最適化
ソース表が30Milレコード
ターゲット表を持っている180Milレコードがあります。どちらの表にも227列あります。
私はSSISを持っていますが、この場合はMERGEステートメントが最適です。以下は、その短縮版である:
;WITH MySource as (
SELECT * FROM [STAGE].[dbo].[STAGE_TABLE]
)
MERGE [EDW].[dbo].[TARGET_TABLE] AS MyTarget
USING MySource
ON MySource.[ID_FIELD] = MyTarget.[ID_FIELD]
AND MySource.[LoadDate] >= MyTarget.[LoadDate]
WHEN MATCHED THEN UPDATE SET
<<Target Column>> = MySource.<<Source Colums>> --227 columns
WHEN NOT MATCHED THEN INSERT
(
[ID_FIELD],
[LoadDate],
<<225 Other Columns>>
)
VALUES (
MySource.[ID_FIELD],
MySource.[LoadDate],
MySource.<<225 other columns>>
);
私は上記のスクリプトに対して行われた変更のみがここに短いコードブロックを維持するために列のリストを切り捨てています。
私の問題は、私が実行に掛かっているということです。プロファイル画面にCXPACKET
停止とエラー:cwaitpipenewrow, node=2
が表示されます。
このトラブルシューティングを行うにはどうすればよいですか?ありがとうございました。