問題タブ [sql-except]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
28070 参照

sql - INTERSECT と INNER JOIN の間に根本的な違いはありますか?

INNER JOIN は参照されるキーに対して作成され、INTERSECT は作成されないことを理解しています。しかし、場合によっては、両方とも同じことを行うことができます。では、次の 2 つの式の間に (パフォーマンスなどの) 違いはありますか? また、あるとすれば、どちらが良いですか?

式 1:

式 2:

0 投票する
2 に答える
125 参照

sql - EXCEPT クエリがクラスター化されたテーブルである場合、実行プランに並べ替え演算子があるのはなぜですか?

データ ウェアハウスを構築していますが、2 つのテーブルのデータ比較ステートメントに問題があることがわかりました。EXCEPT 演算子を使用して、クラスター化されたインデックス (キーとして通常の int フィールド) を持つテーブルを比較します。私の問題は、クエリ実行プランで、両方のクラスター化インデックスがスキャンされた後に並べ替え演算子があることです。コード例を次に示します。

(GENERATE_SEQUENCE は行ジェネレーターです)

EXCEPT クエリは次のとおりです。

実行計画のイメージは次のとおりです。

[実行計画]

Merge Join には並べ替えられた入力が必要であることは承知していますが、既に十分に並べ替えられていませんか? これは、必要なソートされた列は key_a/key_b だけであることを意味します。そして、これはクラスター化されたインデックスのために既に行われています。key_a/key_b のすべての値の内部には 1 つの行しかなく、並べ替えるものがないため、他の列の並べ替えは必要ありません。

だから、私の質問は次のとおりです。

  1. この状況でクラスター化インデックス スキャンの後に並べ替え演算子があるのはなぜですか?
  2. EXCEPT 演算子を使用する場合、これらの並べ替えを回避するにはどうすればよいですか?
  3. テーブル比較を行うためのより良い方法 (ある場合) は何ですか?

あなたの答えを前もってありがとう:)