G
Guest
Gast
Hallo, ich habe ein Performanceproblem mit folgendem Sachverhalt unter mySQL, wäre schön wenn mir jemand von euch helfen kann
Ich habe folgende Tabellen:
Nun möchte ich alle Sätze haben, bei denen folgende Eigenschaften gegeben sind:
(Tabelle1.nr = Tabelle2.nr2 und kein Tabelle1.datum > (heute-10 tage) und Tabelle2.typ = 1) und alle von Tabelle2, die keine Übereinstimmung mit Tabelle1.nr haben.
Mein Query sieht momentan wie folgt aus:
Funktionert auch soweit ganz gut. Jedoch dauert die Abfrage trotz Index, optimize table auf recht guter Hardware ganze 15 Sekunden.
Ich bin jetzt nicht so der SQL-Profi, dass ich da eine schnellere Methodik finden kann.
Hat von euch jemand eine leuchtende Idee?
Danke!
Ich habe folgende Tabellen:
Code:
Tabelle1 (ca. 700.000 Sätze)
---------
nr(long)
datum(date)
Tabelle2 (ca. 1.000 Sätze)
---------
nr2(long)
typ(date)
Nun möchte ich alle Sätze haben, bei denen folgende Eigenschaften gegeben sind:
(Tabelle1.nr = Tabelle2.nr2 und kein Tabelle1.datum > (heute-10 tage) und Tabelle2.typ = 1) und alle von Tabelle2, die keine Übereinstimmung mit Tabelle1.nr haben.
Mein Query sieht momentan wie folgt aus:
Code:
SELECT
Tabelle2.nr2,
Tabelle1.nr,
max(Tabelle1.datum)as deadline
FROM
Tabelle2
LEFT JOIN
Tabelle1
ON
Tabelle1.nr = Tabelle2.nr2
GROUP BY
Tabelle1.nr
HAVING (
(deadline > (NOW() - INTERVAL 10 DAY)) = 0
OR
Tabelle2.nr2 IS NULL
) AND
Tabelle2.typ = 1
ORDER BY
Tabelle1.nr
Funktionert auch soweit ganz gut. Jedoch dauert die Abfrage trotz Index, optimize table auf recht guter Hardware ganze 15 Sekunden.
Ich bin jetzt nicht so der SQL-Profi, dass ich da eine schnellere Methodik finden kann.
Hat von euch jemand eine leuchtende Idee?
Danke!