Er zijn uiteraard al tig topics over langzame queries, maar ik heb het volgende probleem nog niet op kunnen lossen:
Ik heb een query gemaakt die alle records uit de linkertabel haalt, die niet verbonden zijn aan een record uit de rechtertabel. In de linkertabel (GEGEVENS) staan e-mailadressen van gebruikers, in de rechtertabel (GEBOUW_OBJECT) staan woningen die door een gebruiker geplaatst zijn. Met andere woorden, ik wil alle e-mailadressen van gebruikers hebben die GEEN woning hebben geplaatst. Het gaat om de volgende query:
De query neemt (op verschillende webservers!) een minuut of meer in beslag. Haal ik de DISTINCT weg, dan duurt de query plotseling nog maar +/- 2 seconden (tenminste, phpMyAdmin vertelt me dat, ik moet nog steeds een minuut of langer wachten op de resultpagina). Maar goed, ik heb die DISTINCT gewoon nodig, want ik wil aan elk e-mailadres natuurlijk maar één bericht sturen.
Ook als ik bijvoorbeeld de volgende query gebruik,
welke in feite hetzelfde is, maar dan zonder de JOIN, duurt de query nog maar een halve seconde. En dat is dus wel met DISTINCT (in dit geval krijg ik de resultpagina trouwens wel erg snel op m'n scherm).
Iemand een idee wat de oorzaak is van de trage verwerking van deze query? DISTINCT is dus prima, JOIN ook, maar samen duurt het een eeuwigheid. Maakt MySQL misschien eerst een resultaat waarin ALLE mogelijke combinaties staan (cartetisch heet dat volgens mij)?
Help!
Ik heb een query gemaakt die alle records uit de linkertabel haalt, die niet verbonden zijn aan een record uit de rechtertabel. In de linkertabel (GEGEVENS) staan e-mailadressen van gebruikers, in de rechtertabel (GEBOUW_OBJECT) staan woningen die door een gebruiker geplaatst zijn. Met andere woorden, ik wil alle e-mailadressen van gebruikers hebben die GEEN woning hebben geplaatst. Het gaat om de volgende query:
code:
1
2
3
4
5
| SELECT DISTINCT email FROM GEGEVENS LEFT OUTER JOIN GEBOUW_OBJECT ON GEGEVENS.LID_id = GEBOUW_OBJECT.LID_id WHERE GEBOUW_OBJECT.LID_id IS NULL AND email IS NOT NULL AND email <> '' |
De query neemt (op verschillende webservers!) een minuut of meer in beslag. Haal ik de DISTINCT weg, dan duurt de query plotseling nog maar +/- 2 seconden (tenminste, phpMyAdmin vertelt me dat, ik moet nog steeds een minuut of langer wachten op de resultpagina). Maar goed, ik heb die DISTINCT gewoon nodig, want ik wil aan elk e-mailadres natuurlijk maar één bericht sturen.
Ook als ik bijvoorbeeld de volgende query gebruik,
code:
1
2
3
4
| SELECT DISTINCT email FROM GEGEVENS WHERE email IS NOT NULL AND email <> '' |
welke in feite hetzelfde is, maar dan zonder de JOIN, duurt de query nog maar een halve seconde. En dat is dus wel met DISTINCT (in dit geval krijg ik de resultpagina trouwens wel erg snel op m'n scherm).
Iemand een idee wat de oorzaak is van de trage verwerking van deze query? DISTINCT is dus prima, JOIN ook, maar samen duurt het een eeuwigheid. Maakt MySQL misschien eerst een resultaat waarin ALLE mogelijke combinaties staan (cartetisch heet dat volgens mij)?
Help!