Gibt es eine Möglichkeit, die mathematische Gleichheit zweier SQL-Anweisungen zu überprüfen?
Ich habe zwei SQL-Anweisungen:
- SQL_STATEMENT_1
- SQL_STATEMENT_2
Das Ausführen beider Anweisungen für Daten und das Vergleichen der Ausgabe hilft überhaupt nicht.
Die Mengenmathematik hinter den Anweisungen muss wie bei einem Gleichungslöser ausgewertet werden.
Außerhalb des Rahmens meiner Frage liegen Dinge wie:
- andere Vergleiche als Gleichheit (größer als, kleiner als, LIKE, ...)
- gespeicherte Prozeduren oder Trigger
- Allgemeine Tabellenausdrücke (WITH)
Im Rahmen:
- Unterauswahl: WHERE other_id IN (SELECT id FROM other WHERE ...)
- Tritt bei
select * from foo where id = 4
wird mit Sicherheit den gleichen Ausführungsplan haben wieselect * from foo where id = 2
select * from foo where id = 4
und select * from foo where id = 2
zu haben, wenn 1) die Indexstatistiken nicht aktuell sind und 2) selbst wenn die Indexstatistiken aktuell sind, die Schlüsselverteilung der ID schief ist (vorausgesetzt, die ID ist kein eindeutiger Schlüssel).