Ich habe zwei ähnliche Tabellen in Postgres mit nur einem 32-Byte-lateinischen Feld (einfacher md5-Hash). Beide Tabellen haben ~ 30.000.000 Zeilen. Tabellen haben wenig Unterschied (10-1000 Zeilen sind unterschiedlich)
Ist es möglich, mit Postgres einen Unterschied zwischen diesen Tabellen zu finden, sollte das Ergebnis 10-1000 Zeilen sein, die ich oben beschrieben habe.
Das ist keine echte Aufgabe, ich möchte nur wissen, wie PostgreSQL mit JOIN-ähnlicher Logik umgeht.
Die beste Option ist wahrscheinlich EXISTS
Anti-Semi-Join:
tbl1
ist die Tabelle mit überzähligen Zeilen in diesem Beispiel:
Wenn Sie nicht wissen, welche Tabelle überzählige Zeilen oder beides hat, können Sie entweder die obige Abfrage nach dem Wechseln der Tabellennamen wiederholen oder:
%Vor%Überblick über grundlegende Techniken in einem späteren Post:
Übrigens wäre es viel effizienter, % co_de zu verwenden % Spalten für MD5-Hashes:
Nach meiner Erfahrung dauert NOT IN mit einer Unterabfrage sehr lange. Ich würde es mit einem inklusiven Join machen:
%Vor%Und dann dasselbe für den anderen Tisch umgekehrt.
Tags und Links sql postgresql left-join exists full-outer-join