Archief - [PROG][PHP + MYSQL] beter verschillende queries dan 1 query?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Cypher

Legacy Member
Ik zit met een kleine vraag, nl. is het beter een grote query te doen in mysql en op die query wat php code schrijven zodat alle gegevens eruit gehaald worden of is het beter van verschillende queries te doen om de gegevens eruit te halen.

Ik zal een klein voorbeeldje geven met wat ik bedoel om het duidelijk te maken:

Stel je hebt een database met allemaal gehele getallen (dus zowel positieve als negatieve) en je wil tellen hoeveel positieve getallen hierin zitten en hoeveel negatieve. Is het dan beter om een "SELECT * FROM getallen" en dan via allerhande manieren hieruit de telling te starten. Of is het beter om 2 queries te doen: "SELECT COUNT(*) AS Pos FROM getallen WHERE getal > 0" en "SELECT COUNT(*) AS Neg FROM getallen WHERE getal < 0".

Dit geheel is een beetje een performance vraag... zijn veel queries belastend op een systeem of zal die phpcode belastender zijn? Aangezien ik redelijk veel data zo uit een database moet gaan trekken.

Cyberkef

Legacy Member
Door één deftig opgestelde query kan je alvast heel wat php gefoefel vermijden en dus imo de boel performanter maken. MySQL is meer dan enkel en alleen selects, dus maak er ook gebruik van, het zal er heus niet door breken :p

Eens zien of ik er nog wat van kan bakken:

Code:
SELECT
     (SELECT COUNT(getal_id) FROM getallen WHERE getal < 0) as nbNegGetallen,
     (SELECT COUNT(getal_id) FROM getallen WHERE getal > 0) as nbPosGetallen

Zou evengoed moeten werken (als mijn mysql-ish niet te roestig is geworden :p) en dat in één query (met twee subqueries). Waarschijnlijk zijn er wel nog andere (en betere) oplossingen dan mijn ding (group by + having, ...), maar wees niet bang om wat te experimenteren met MySQL om je uitlezing gemakkelijker te maken :)

killgore

Legacy Member
als jij een index op getal hebt gedefinieerd zal de sql-manier zeker veel sneller gaan met 2 aparte queries (of 1 'grote' zoals sieberkev zegt :)).

Wanneer je die index niet hebt zal er waarschijnlijk geen gigantisch verschil opzitten. Maar je zeer waarschijnlijk zal jouw mysql-manier op zich toch iets trager zijn omdat je alles 2x leest.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan