SQL:Statment brauch 2Minuten
gismo_
- sonstiges
0 Frank (no reg)0 Mike
Hallo Leute,
könnt ihr mir bitte bei diesem Select helfen:
SELECT
t.Anrede,
t.TN_NR,
t.Vorname,
t.Nachname,
t.Email,
t.angemeldet,
COUNT(b.TN_NR) as anz,
t.Sourcing_Bewerber
FROM Teilnehmer as t LEFT JOIN Bewertung_Extern as b ON t.TN_NR =
b.TN_NR
WHERE (t.angemeldet < DATE_SUB(CURDATE(),INTERVAL 30 DAY))
AND (t.Sourcing_Bewerber = 'ja')
AND (b.status=2 OR b.id IS NULL)
GROUP BY t.TN_NR HAVING anz < 3
Die Tabelle hat t.15.000 und b.80.0000 Einträge. Der Select dauert über 2 Minuten. Das mir bissel lang. Wenn ich es als Inner Join mache, dann brauch das Statement nur 5 SEKUNDEN, allerdings bekomme ich dann keine IS NULL Einträge aus der Tabelle Bewertungen_Extern.
Gruß
gismo_
Hi,
äh, ja .. was willst du denn eigentlich genau wissen, versuch einfach das Ergebnis zu beschreiben, was du gern hättest.
Bevor du die ganzen 80.000 Datensätze in B joinst, solltest du sie vielleicht mit dem sowieso verwendeten (b.status=2 or b.Id IS NULL) verringern. à la ... LEFT JOIN (SELECT TN_NR FROM Bewertung_Extern WHERE (status=2) or (id is null)) as b ...
Wobei mir nicht ganz klar wird wie b.id <null> sein kann, dann gäbe es doch gar keinen Datensatz.
Außerdem, mit welchen Datenbanksystem arbeitest du?
Ciao, Frank
--
I don't want to be a regular of this forum.
Moin gismo,
Die Tabelle hat t.15.000 und b.80.0000 Einträge. Der Select dauert über 2 Minuten. Das mir bissel lang. Wenn ich es als Inner Join mache, dann brauch das Statement nur 5 SEKUNDEN, allerdings bekomme ich dann keine IS NULL Einträge aus der Tabelle Bewertungen_Extern.
hierzu fallen mir zwei Dinge ein, vieleicht ist es ja schon so aber es sollte in jedem Fall so sein.
1. Die Felddefinitionen sollten in beiden Tabellen die gleichen sein.
2. Die Indizes richtig plaziert.
Gruß
Mike