Pagina 1 van 1

Help mijn query duurt wel 4 minuten!

BerichtGeplaatst: 21 okt 2010 18:03
door Remi
Hey,

Ik heb een query waarvan het uitvoeren wel 4 minuten duurt. Hoe kan ik er voor zorgen dat dit sneller gaat?
Het zit zo. Ik heb een tabel met producten, deze worden geupload naar een website. Als ze geupload zijn komen ze in de tabel done, als het niet lukt (door gebrek aan gegevens) komen ze in de tabel notdone.
De query die de producten ophaalt kijkt of de producten al niet in de tabel done of notdone staan. De producten die er niet instaan en dus nog moeten worden geupload stuurt hij terug.
Maar het probleem is dat die er 4 minuten over doet om de query uit te voeren. De CPU load zie je ook gelijk naar 100% schieten.
Dus hoe o hoe kan ik dit sneller laten gaan?
Dit is de query:
Code: Selecteer alles
SELECT k.code, k.naam, leverancier.prijs, leverancier.maat
FROM producten AS k, leverancier
WHERE leverancier.prijs > 0
  AND leverancier.naam = k.naam
  AND k.code NOT IN (SELECT code FROM done WHERE DONE = 1)
  AND k.code NOT IN (SELECT code FROM notdone WHERE NOTDONE = 1)
ORDER BY leverancier.prijs ASC
LIMIT 1,2

Re: Help mijn query duurt wel 4 minuten!

BerichtGeplaatst: 21 okt 2010 21:57
door Derk
Bij mij op school zeiden ze altijd dat zelf query's optimaliseren niet zo veel zin heeft aangezien de database het toch oplost zoals hij het het snelste kan.
Nu geloof ik daar eerlijk gezegd niet zo veel van, maar als het wel zo is, zul je moeten accepteren dat het 4 min. duurt.

Re: Help mijn query duurt wel 4 minuten!

BerichtGeplaatst: 22 okt 2010 21:29
door KillerSponge
Dat kan zeker wel ;)

Maar ik moet zeggen dat deze structuur een heel stuk beter opgezet had kunnen worden. Je hebt nu twee tabellen die feitelijk hetzelfde zijn, wat de performance niet bepaald verbeterd. Als je zorgt dat het in één tabel zit, en vervolgens de zoekactie uitvoert op een geindexeerde key (liest een integer en geen varchar) zou het al een stuk sneller moeten gaan.

Er zijn nog wel meer manieren om queries te optimaliseren, maar daarvoor moet je erg veel verstand hebben van hoe de database intern alles afhandelt... Ik weet het iig niet :P

Re: Help mijn query duurt wel 4 minuten!

BerichtGeplaatst: 25 okt 2010 13:00
door Remi
Ik heb nu producten en leverancier samengevoegd, aangezien die toch altijd gelijk is. Dit scheelt nu al vast 1,5 minuut. Dus dat is een hele vooruitgang.
@killer, het probleem is dat het niet mijn eigen database is en ik had te veel werk vind om de hele database opnieuw op te bouwen moet ik omslachtig query's gebruiken. Maar ik sta er gewoon van te kijken dat ding daarmee gewoon 4 minuten lang 100% staat te trekken en vroeg mij dus af of ik wat fout deed.
Maar goed, nog maar 1000 producten dan ben ik klaar. 3*1000 = 3000 minuten = 50 uur, ykes!

Remi

Re: Help mijn query duurt wel 4 minuten!

BerichtGeplaatst: 25 okt 2010 15:40
door KillerSponge
Ik heb bij het berekenen van website statistieken al wel queries gehad die een half uur tot drie kwartier duren, dat kan dus best ;)

Het maffe is alleen dat dit opzich een vrij simpele query is, die veel sneller dan dat zou moeten gaan... Zélfs als de database zo maf en onefficient is opgezet.