[mysql/php] main record en gerelateerde items - veel queries

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • js303
  • Registratie: April 2003
  • Laatst online: 01-06 10:17
ik ben bezig met een cms met oa. een invoerscherm waarop de hoofdkaart van een object (bijv. een bedrijf) te zien is, met allerlei omliggende gerelateerde informatie, zoals adressen, telefoonnummers, gerelateerde personen en bedrijven, gekoppelde artikelen, notities etc.

om een idee te geven: http://217.67.233.220/snd/test.jpg

nu zit ik eigenlijk vast in het optimaliseren van m'n queries.

methode 1: hoofdkaart-gegevens ophalen + alle gerelateerde gegevens via left joins. resultaat: een gigantische result met veel rijen, waarbij ik in php nog veel moet gaan nafilteren (dingen als if (!in_array($row['person_id'], $persons) print "person {$row['person_name']}")

methode 2: 9 losse simpele queries die per query 1 type gegeven (adressen. artikelen of gerelateerde personen) ophalen.

methode 3: iemand??

nb 1: ik werk met mysql 3.23 dus ik kan geen gebruikmaken van group_concat. echter al zou ik naar 4.1 upgraden dan nog moet ik nog heel veel gaan nabewerken in php mbv explode enzo...

nb2: over methode 1, kost het nou evenredig meer performance / resources om een result te krijgen die bijv. 2x zoveel rows bevat? maw. door gebruik van left joins krijg je alle mogelijke combinaties terug, waardoor het bij veel joins een erg grote result kan worden...

nb3: bij methode 1 lijkt het me erg belangrijk om de tables zo te optimaliseren dat goed gebruikgemaakt wordt van indexen. stel nu dat je even het indexeren aan de kant zou zetten, kan ik dan aannemen dat een enkele zeer complexe query met veel joins en veel velden evenveel 'kost' als een reeks kleine simpele queries?

dank!

[ Voor 4% gewijzigd door js303 op 02-11-2004 13:21 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Een database is nou eenmaal beter geschikt om data te filteren en dergelijke dan PHP. Met joins werken geniet altijd mijn voorkeur, maar het is soms gewoon eenvoudiger om met meerdere queries te werken, zelfs al kost dat een beetje performance. Misschien is het ook zo dat je kan combineren? Zodat je niet 9 losse queries overhoudt, maar bijvoorbeeld 3 dankzij wat extra joins.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.