私の質問は T-SQL、SQL Server 環境に根ざしていますが、その範囲はこのテクノロジに限定されません。私は、既存のビュー、ストアド プロシージャ、および新しいビューを設計する、非常に複雑なビジネス ロジックを持つデータベースに取り組んでいます。異なるクエリまたはそれらの一部を比較することによって、同じ仕事を異なる配置で実行しているセクションがあることを強く感じますが、もちろん混乱全体をリファクタリングするには、感覚以上の何かが必要です。そのため、2 つのステートメントが同等であることを示す方法を決定しようとしています。
A と B の 2 つのクエリが同じレコードセットを生成することを確認することは、明らかですが弱い応答です。A が B のサブセットであり、B が A のサブセットである場合、それらは同じレコードセットです。もちろん、レコードセットはクエリではないため、結果はデータと特定のパラメーター値に依存する可能性があるためです。私の質問は: 2 つの異なるクエリの同等性を証明する方法はありますか? データベースによって実行される最適化はこれで機能するはずなので、そうです。誰かがこれを掘り下げているドキュメントや本へのポインタを私に提供できますか? 同等性を証明する一般的な方法がない場合、仕事をする効果的なヒューリスティックに従って実行される回帰テストに基づくスマートなアプローチがありますか?
後で編集: 場合によっては、リレーショナル代数を使用してクエリを (手作業で) リバース エンジニアリングすることは、他のクエリやコンピューターを使用する代わりに、クエリの等価性を評価する優れた方法でしょうか? 場合によっては、この「リバース エンジニアリング」を実行するのに役立つ自動化ツールがありますか?
助けてくれてどうもありがとう