2 つのデータベース間のすべての変更を見つけるには、pk でテーブルを結合し、date_modified フィールドを使用して最新のレコードを選択する必要があります。EXCEPT
テーブルのスキーマが同じであるため、使用するとパフォーマンスが向上します。で書き直したいのですが、の実装がすべての場合にaEXCEPT
を上回るかどうかはわかりません。いつ使用するかについて、誰かがより技術的な説明をしてくれることを願っています。EXCEPT
JOIN
EXCEPT
質問する
9434 次
2 に答える
14
同等EXCEPT
のOUTER JOIN
. インテントの記述方法に関係なく、オプティマイザは適切な実行計画を選択します。
とはいえ、ここに私のガイドラインがあります:
次の少なくとも 1 つEXCEPT
に該当する場合に使用します。
- クエリがより読みやすくなります (これはほとんどの場合に当てはまります)。
- パフォーマンスが向上します。
また、次の両方が当てはまります。
- クエリは意味的に同一の結果を生成し、すべてのエッジ ケースを含む十分な回帰テストを通じてこれを実証できます。
- パフォーマンスは低下しません (ここでも、すべてのエッジ ケース、およびバッファー プールのクリア、統計の更新、プラン キャッシュのクリア、サービスの再起動などの環境の変更)。
がより複雑になったり、列の一部の重複に依存しているが他の列には依存していないため、同等のEXCEPT
クエリを作成するのは難しい場合があることに注意することが重要です。JOIN
同等のものを書くことは、達成するのがはるかに簡単であるべきNOT EXISTS
よりもわずかに読みにくいですが、多くの場合、より良い計画につながります (ただし、私が行った方法を除いて、またはとは決して言わないことに注意してください)。EXCEPT
ALWAYS
NEVER
于 2013-02-04T18:39:01.817 に答える