Wie würden Sie vorgehen, um zu beweisen, dass zwei Abfragen funktional gleichwertig sind, dh sie werden immer beide dieselbe Ergebnismenge zurückgeben.
Da ich dabei eine bestimmte Abfrage im Sinn hatte, tat ich schließlich, wie @dougman vorgeschlagen hatte, über etwa 10 % der Zeilen der betroffenen Tabellen und verglich die Ergebnisse, um sicherzustellen, dass es keine falschen Ergebnisse gab.
Lösung des Problems
Das Beste, was Sie tun können, ist, die beiden Abfrageausgaben basierend auf einem bestimmten Satz von Eingaben zu vergleichen und nach Unterschieden zu suchen. Zu sagen, dass sie immer die gleichen Ergebnisse für alle Eingaben zurückgeben, hängt wirklich von den Daten ab.
Für Oracle ist hier einer der besseren, wenn nicht besten Ansätze (sehr effizient) ( Ctrl+ FVergleich des Inhalts zweier Tabellen):
http://www.oracle.com/technetwork/issue-archive/2005/05-jan/o15asktom-084959.html
Was läuft darauf hinaus:
select c1,c2,c3,
count(src1) CNT1,
count(src2) CNT2
from (select a.*,
1 src1,
to_number(null) src2
from a
union all
select b.*,
to_number(null) src1,
2 src2
from b
)
group by c1,c2,c3
having count(src1) <> count(src2);
Keine Kommentare:
Kommentar veröffentlichen