Hallo
Ich hab 2 Tabellen in denen jeweils zu einer objektnummer verschiedene
Werte drin stehen.
Jetzt will ich kontrollieren, welche Nummern in der einen Tabelle fehlen, die in der anderen Tabelle vorhanden sind.
Also
(mal vereinfacht, sind noch ein paar andere WHERE bedingungen, die nicht wichtig sind).
Leider ist die Anzahl der ausgewählten Zeilen von Tabelle1 manchmal bei ca 50000 und vor allem, wenn keine Unterschiede bestehen, also als Ergebnis keine Zeile rauskommt, braucht die Abfrage z.T über 1 Minute
Weil sie dann auch Tabelle1 blockiert, legt dass den halben Server lahm.
Gibt´s ne andere Möglichkeit, die Abfrage hinzukriegen, oder
sollte ich mal ne php Lösung probieren?
Also
Könnte aber evtl am Speicher scheitern
Ausserdem sind dass dann 3 Abfragen, was auch mit einer gehen sollte.
Wer weiss mehr?
Ich hab 2 Tabellen in denen jeweils zu einer objektnummer verschiedene
Werte drin stehen.
Jetzt will ich kontrollieren, welche Nummern in der einen Tabelle fehlen, die in der anderen Tabelle vorhanden sind.
Also
PHP-Code:
SELECT tabelle2.objnr FROM
tabelle1
LEFT JOIN tabelle2 USING (objnr)
WHERE tabelle2.objnr IS NULL
Leider ist die Anzahl der ausgewählten Zeilen von Tabelle1 manchmal bei ca 50000 und vor allem, wenn keine Unterschiede bestehen, also als Ergebnis keine Zeile rauskommt, braucht die Abfrage z.T über 1 Minute
Weil sie dann auch Tabelle1 blockiert, legt dass den halben Server lahm.
Gibt´s ne andere Möglichkeit, die Abfrage hinzukriegen, oder
sollte ich mal ne php Lösung probieren?
Also
PHP-Code:
$Objects1 = Objektnummern Tabelle1
$Objects2 = Objektnummern Tabelle2
$Objects = array_diff($Objects1, $Objects2);
$query = "SELECT * from Tabelle 2 WHERE objnr IN ('".implode("','", $Objects)."')";
Ausserdem sind dass dann 3 Abfragen, was auch mit einer gehen sollte.
Wer weiss mehr?
Kommentar