11

SQL サーバー バックエンドにアクセスして作成しているアプリケーションがあります。最も頻繁に使用される部分の 1 つは、ユーザーが質問に対する回答を選択する場所です。次にストアド プロシージャが起動され、回答が既に与えられているかどうかを確認し、UPDATE が実行されている場合は実行され、そうでない場合は INSERT が実行されます。

これは問題なく動作しますが、SQL Server 2008 Express にアップグレードしたので、新しい MERGE コマンドを使用するようにこの SP を書き直す方が良い/速い/効率的かどうか疑問に思っていました。

これがSELECTの後にINSERTまたはUPDATEを実行するよりも速いかどうか、誰にもわかりませんか?

4

1 に答える 1

4

努力する価値はありません。おそらく実行可能ですが、目立ったものは何もありません。

MERGE は、何を挿入/更新するかを見つけることが難しい部分であるデータ ウェアハウスを特にターゲットにしています。これにより、すべての操作 (挿入、更新) を、条件ごとに 1 つではなく、1 つのマージ セットで実行できます。これはあなたの場合には本当の違いはありません。

300 万行のテーブルに 300 万から 500 万行をアップロードしている 1 つのデータベースがあります。マージにより、パフォーマンスが 50% 向上します (2 つではなく 1 つのテーブル スキャン)。

于 2010-03-22T14:19:31.150 に答える