2つのSQLステートメントの数学的等価性を確認する方法はありますか?
2つのSQLステートメントがあります。
- SQL_STATEMENT_1
- SQL_STATEMENT_2
データに対して両方のステートメントを実行し、出力を比較してもまったく役に立ちません。
方程式ソルバーが行うように、ステートメントの背後にあるセット数学を評価する必要があります。
私の質問の範囲外のものは次のようなものです:
- 等しいかどうかの比較(より大きい、より小さい、LIKEなど)
- ストアドプロシージャ、またはトリガー
- 共通テーブル式(WITH)
スコープ内:
- 副選択:WHERE other_id IN(SELECT id FROM other WHERE ...)
- 結合
select * from foo where id = 4
最も確かに同じ実行計画を持つことになりますselect * from foo where id = 2
select * from foo where id = 4
ありselect * from foo where id = 2
ます。 (提供されたIDは一意のキーではありません)。