Hallo,
da ich feststellen muss, dass MySQL in diesem Fall nicht sehr gut geeignet ist, da das Cachen der tmp Tabelle einem Flaschenhals gleicht, bin ich nun auf der Suche nach einem DBMS, dass mit einer riesen Tabelle besser zu Recht kommt.
Beispiel, die meinem Anwendungsfall entspricht:
vereinfachte Struktur:
Tab1: PK INT i1, INT i2, INT i3
Tab2: INT j1, INT j2, INT j3; PK(j1,j2)
Daten:
Tab1 mit etwa 100000 Datensätzen.
Tab2 soll nun erstellt werden aus dem Kreuzprodukt von Tab1.i1 mit Tab1.i1, wobei doppelte Eintragungen (Reihenfolge gleichgültig) unerwünscht sind:
INSERT INTO Tab2 (j1,j2)
SELECT T1_1.i1,T1_2.i2 FROM Tab1 AS T1_1,Tab1 AS T1_2
WHERE T1_1.i1<T1_2.i2;
Ich komme damit auf ca 5000000000 Datensätze in Tab2.
Nun wird in einem letzten Schritt durch algorithmische Umformungen der Inhalt von j3 für die vielen Einräge erzeugt. Leider handelt es sich um eine COS, PWR & SQRT Berechnung, aber irgendwann sollte auch diese für alle Datensätze abgeschlossen sein; stark vereinfacht:
UPDATE Tab2 SET j3=(SELECT (T1_1.i2*T1_1.i3+T1_2.i2*T1_2.i3) FROM Tab1 AS T1_1,Tab1 AS T1_2 WHERE T1_1.i1=Tab2.j1 AND T1_2.i1=Tab2.j2);
Insbesondere die Datenmenge von Tab2 lässt mich zum Entschluss kommen, dass ich eine Alternative zu MySQL benötige und nun wüsste ich gerne, wozu Ihr mir raten würdet.
Danke für Tipps!