UNION ALL は UNION よりも優れたパフォーマンスを発揮するはずであることを私は知っています (参照: union と union all のパフォーマンス)。
今、私はこの巨大なストアド プロシージャ (多くのクエリを含む) を持っています。最終的な結果は、それらの間に UNION を持つ 2 つのセクションの SELECT です。両方のデータセットは互いに外部であるため、より優れていると思われる UNION ALL を使用できます (個別の操作はありません)。
私はいくつかのデータベースでそれをチェックしましたが、うまくいきました。問題は、顧客の 1 人がパフォーマンス チューニング用にデータベースを提供してくれたことです。調査したところ、UNION ALL を UNION に変更すると、パフォーマンスが少し向上することに気付きました (!)。これが、ストアド プロシージャで行ったすべての変更です。
誰かがこの状況がどのように発生するかを説明できますか???
ありがとう、
ジヴ
更新:
両方のクエリの実行計画を添付(差分部分):