In het project waar ik aan bezig ben loop ik tegen wat optimalisatie kwesties aan. Het volgende is het probleem:
Uit de database wordt een lijst gehaald van "klussen". Deze lijst is 1 query waarbij de tabel (voor een deel) wordt geraadpleegd. Vervolgens wordt er voor iedere rij een class aangemaakt van het type "klus" waarin de gegevens gestopt worden.
Iedere klus bevat op zijn beurt weer een magazijn wat bestaat uit een x aantal werknemers, een y aantal vervoersmiddellen en een z aantal artikelen uit het totale magazijn. Nu wordt er per klus een nieuwe query gedaan om die zaken op te halen, eentje voor het personeel, eentje voor het vervoer en eentje voor de artikelen. Kortom: per klus 3 query's. Al deze zaken worden ook weer netjes in hun eigen class gestopt. Wanneer alle gegevens uiteindelijk opgehaald zijn worden ze in een XML boom gestopt die wordt afgedrukt en getransformeerd.
Er staan nu 138 klussen in de hoofdtabel, dus worden er voor het gehele overzicht 1+3x138 query's uitgevoerd: bah! Totale uitvoertijd van de pagina loopt tegen de 10 seconden aan (geen snelle server overigens)!
Nu heb ik wat lopen zoeken en kom ik tot verschillende oplossingen aan de database kant, zoals JOINS. Echter vraag ik me ook af of de traagheid niet veroorzaakt wordt door de grote hoeveelheid classes die ik aanmaak. Ik wilde het graag netjes OO doen, maar dat lijkt ineens helemaal niet zo'n handige oplossing meer aangezien het totaal zo traag wordt.
Welke tips&tricks hebben jullie zoal voor deze problemen? Ik weet wel hoe ik JOINs op moet stellen of hoe ik een groot deel van m'n OO structuur eruit knikker, maar wat een goeie compromis tussen de verschillende opties? Want ik kan me niet voorstellen dat een grote JOIN zoveel sneller gaat zijn dan wat verschillende queries.
Een andere optie zou zijn om het overzicht te laten genereren als XML en op te slaan voor gebruik. Dan hoef ik alleen bij wijzigingen opnieuw een overzicht uit te draaien waardoor in ieder geval de serverload beperkt wordt. Doe dat echter liever niet.
Uit de database wordt een lijst gehaald van "klussen". Deze lijst is 1 query waarbij de tabel (voor een deel) wordt geraadpleegd. Vervolgens wordt er voor iedere rij een class aangemaakt van het type "klus" waarin de gegevens gestopt worden.
Iedere klus bevat op zijn beurt weer een magazijn wat bestaat uit een x aantal werknemers, een y aantal vervoersmiddellen en een z aantal artikelen uit het totale magazijn. Nu wordt er per klus een nieuwe query gedaan om die zaken op te halen, eentje voor het personeel, eentje voor het vervoer en eentje voor de artikelen. Kortom: per klus 3 query's. Al deze zaken worden ook weer netjes in hun eigen class gestopt. Wanneer alle gegevens uiteindelijk opgehaald zijn worden ze in een XML boom gestopt die wordt afgedrukt en getransformeerd.
Er staan nu 138 klussen in de hoofdtabel, dus worden er voor het gehele overzicht 1+3x138 query's uitgevoerd: bah! Totale uitvoertijd van de pagina loopt tegen de 10 seconden aan (geen snelle server overigens)!
Nu heb ik wat lopen zoeken en kom ik tot verschillende oplossingen aan de database kant, zoals JOINS. Echter vraag ik me ook af of de traagheid niet veroorzaakt wordt door de grote hoeveelheid classes die ik aanmaak. Ik wilde het graag netjes OO doen, maar dat lijkt ineens helemaal niet zo'n handige oplossing meer aangezien het totaal zo traag wordt.
Welke tips&tricks hebben jullie zoal voor deze problemen? Ik weet wel hoe ik JOINs op moet stellen of hoe ik een groot deel van m'n OO structuur eruit knikker, maar wat een goeie compromis tussen de verschillende opties? Want ik kan me niet voorstellen dat een grote JOIN zoveel sneller gaat zijn dan wat verschillende queries.
Een andere optie zou zijn om het overzicht te laten genereren als XML en op te slaan voor gebruik. Dan hoef ik alleen bij wijzigingen opnieuw een overzicht uit te draaien waardoor in ieder geval de serverload beperkt wordt. Doe dat echter liever niet.