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 = 4wird mit Sicherheit den gleichen Ausführungsplan haben wieselect * from foo where id = 2
select * from foo where id = 4und select * from foo where id = 2zu 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).