Ich brauche kartesischen Produkt der beiden Tabellen MINUS Kombinationen, wo zwei Tabellen gleichen Wert in einem Feld haben. JetztWählen Sie ein kartesisches Produkt aus 2 Tabellen mit ungleich (<>) wo Bedingung; postgresql
SELECT
table1.field1,
table1.field2,
table2.field3,
table2.field4
FROM
table1, table2
WHERE
table1.field1 <> table2.field3;
, nehmen wir an, dass Tabelle1 und Tabelle2 eine Million Datensätze haben je und dass Felder indiziert. Was ist der effizienteste Weg, das Resultset in angemessener Zeit abzurufen? Gibt es eine bessere Möglichkeit, diese Abfrage zu schreiben?
Bitte beachten Sie NICHT GLEICHE Bedingung in Where-Klausel. Ich brauche ein kartesisches Produkt der beiden MINUS-Tabellen, wo zwei Tabellen in einem Feld denselben Wert haben. Vielen Dank. – zlatko
Dies scheint eine sehr vernünftige Möglichkeit zu sein, ein kartesisches Produkt zu erzeugen, außer wenn zwei Felder gleich sind. – JNevill
Dies ist ein Tera von Ergebnissen, 4 Tera von Feldern, der Inhalt von jedem Feld, wie viele Bytes? Wie viel RAM hast du? Können Sie das Ergebnis, wenn es in mehrere Teile aufgeteilt ist, vielleicht mit "AND t1.f1> 0 AND t1.f1 <= 100000" in zehn Schritten verwenden. Ist in einer der beiden Abfragen ein sequenzierter Schlüssel enthalten? Sie könnten die Spalten beider Tabellen (2 Megareihen) lesen und sie mit einer Programmiersprache kombinieren, aber vielleicht ist postgresql intelligent genug, um das Problem selbst zu lösen. –