[PHP/MySQL] Hoeveel queries per pagina?

Pagina: 1
Acties:

  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52
L.S.

Ik heb geprobeerd te zoeken aangezien ik een donkerbruin vermoeden had dat dit nogal eens langsgekomen was, maar zonder succes helaas. Search draait een beetje lo-fi geloof ik, waarschijnlijk ivm de problemen.

Nu is mijn vraag dus wat een beetje gangbaar is wat betreft het aantal queries dat je per pagina uitvoert. Wat is veel? 3? 6? 12? Ik hoop dat iemand mij een beetje richtlijnen kan geven aangezien ik niet echt veel ervaring heb op dit gebied en me afvraag hoe anderen dit zien.

Thnx ;)

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Tja je moet het allemaal in de juist context kunnen zien, hoe complex zijn de queries? Zijn de queries redundant of kunnen ze ook samengevoegd worden in 1 query? Wordt de desbetreffende pagina relatief vaak opgevraagd?
Er is hier niet echt een zinnig antwoord op te geven. Maar bij iets concreets, ik heb meestal zo rond de 3 queries op 1 pagina.

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 14-09 22:46

Apache

amateur software devver

3 query's lijkt me goed, ik ken wel sites die slechts 1 query per page gebruiken (http://games.telenet.be bvb) maar dan zit je op sommige moment echt te 'kloten' ;)

3 query's levert niet echt een bottleneck page op denk ik :)

If it ain't broken it doesn't have enough features


Verwijderd

beter 2 goede query's dan 1 slechte :)

owja en het hoeft niet altijd zo te zijn dat als je meerdere query's samenvoegt dat het dan beter is voor je server hoor :)

Meer query's is niet per definitie slechter

  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52
Ja dat is dus een beetje lastig, dat dacht ik al. Beetje moeilijke vraag ook. Maar ik zit me namelijk af te vragen hoe ik alles het beste in kan delen, en probeer dus een beetje een punt te hebben om naar te streven, een maximaal aantal queries dus. Op zich werkt het nu wel goed, maar ik heb nu 6 queries in het script en heb geen flauw idee of dat te veel is.

Het gaat erom dat ik met 3 queries voor een voorpagina 3x10 titels uit 3 verschillende tabellen (nieuws, recensies, features) trek voor een updatemenutje. Dan moet ik tevens nog wat headlines hebben, die ook weer uit een andere tabel komen, en daarvoor ook weer info uit de 3 tabellen moet hebben (headline table bevat dus de id's van de nieuwsitems/recensies/features als foreign keys dus de titels moet ik nog erbij hebben). Ik zal een beetje de situatie proberen uit te leggen.

Ik heb dus de 3 tabellen nieuws, recensies en features. Dan de headline tabel die er zo uit ziet:

headlineID
itemType
itemID
isMain

headlineID is dus gewoon de ID van de row in deze tabel, itemType is een ENUM 1,2 of 3 en staat voor of het een nieuwsitem, recensie of feature betreft, itemID is de ID van desbetreffende item, en als isMain = 1, dan komt die headline bovenaan de pagina (als een soort extra belangrijke headline).

Nu is het punt dus dat ik als ik de headlines opvraag, dat per itemType moet doen, omdat ik de titels niet in de headline tabel wil opslaan, maar gewoon uit de nieuws/recensie/feature tabel wil trekken met een join. Dus eerst vraag ik de headlines op WHERE itemType = '1' met een join naar de nieuws tabel, dan WHERE itemType = '2' met een join naar de recensie tabel en dan de headlines voor de features. Maar nu zit ik dus al aan 3 queries.

Ik heb eraan zitten denken om de titels voor de headlines uit de queries voor het updatemenutje te halen, alleen die pakken de laatste 10 (SELECT recensieID, recensieTitle FROM recensieGegevens LIMIT 10 zegmaar), en ik wil er wel rekening mee houden dat de headlines niet persé één van de laatste 10 entries hoeven te zijn.

Ik heb eigenlijk geen betere manier kunnen bedenken om het te doen. Iemand ideetjes?

  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52
schop ^^

  • Life-is-party
  • Registratie: Oktober 2000
  • Laatst online: 14-02-2023
Uhm ik heb op sommige pagina's wél 10 queries (tja :))

máár op de meeste 3 à 4............

Ik merk totaal geen verschil in laadtijd (genereertijd). Het ligt dus ook een beetje aan je databeest (op wat voor server hij draait etc)

Acer TM661LMi - Intel Centrino 1,4 Ghz - 512mb ram - DVD-RW


Verwijderd

Op vBulletin is +/- 20 queries normaal.

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op woensdag 05 december 2001 16:32 schreef Zef het volgende:
Op vBulletin is +/- 20 queries normaal.
Op mijn forum = +/- 2 normaal ;)

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Ik heb altijd het idee dat des te flexibeler je je programma opzet. Dat gebruikers bv bepaalde eigenschappen kunnen toevoegen/verwijderen je meer queries nodig hebt om dat te ondersteunen.
Maar dit is eigenlijk de eeuwen-oude trade-off tussen snelheid en flexibiliteit

Verwijderd

20 queries voor een forum lijkt me redelijk. Beter iets meer code werk dan een slome mysql thread doordat er TE veel joins in zitten, en left joins en de hele shit.. dan nog sorteren, groeperen... auw!

Verwijderd

Op woensdag 05 december 2001 16:34 schreef Nielsz het volgende:

[..]

Op mijn forum = +/- 2 normaal ;)
Maar jou forum kan ook geen flikker :D

Verwijderd

Op woensdag 05 december 2001 17:03 schreef GDOG het volgende:
20 queries voor een forum lijkt me redelijk. Beter iets meer code werk dan een slome mysql thread doordat er TE veel joins in zitten, en left joins en de hele shit.. dan nog sorteren, groeperen... auw!
Ja, er zit hoogstens 1 zware query tussen geloof ik (tenminste op mijn forum). De rest zijn kleine dingetjes (naam van forum, naam van category, member gegevens e.d.)

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op woensdag 05 december 2001 17:04 schreef Zef het volgende:

[..]

Maar jou forum kan ook geen flikker :D
Mijn forum werkt prima :( ;)
En tja, voor elke extra optie die je erop zet, komt er ook weer 1 querie bij. Keuze die je maakt dus.


zef:
in showtopic.php oid, kan je gewoon met 1 querie de topictitle, topicstatus,forumtitle,forumstatus,forumid halen. Heb je dus echt GEEN 2 queries voor nodig.

Verwijderd

Op woensdag 05 december 2001 17:06 schreef Nielsz het volgende:
zef:
in showtopic.php oid, kan je gewoon met 1 querie de topictitle, topicstatus,forumtitle,forumstatus,forumid halen. Heb je dus echt GEEN 2 queries voor nodig.
Ik weet niet hoe jou database d'r uit ziet, maar bij mij zitten deze in twee tabellen, en nou kan ik in 1 query wel twee tabellen gaan raadplegen (misschien) maar dan is het geheel toch net zo zwaar als twee apparte queries lijkt me.

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op woensdag 05 december 2001 17:10 schreef Zef het volgende:

[..]

Ik weet niet hoe jou database d'r uit ziet, maar bij mij zitten deze in twee tabellen, en nou kan ik in 1 query wel twee tabellen gaan raadplegen (misschien) maar dan is het geheel toch net zo zwaar als twee apparte queries lijkt me.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
select 
 forum_forums.title, 
 forum_forums.id, 
 forum_forums.status, 
 forum_topics.titel, 
 forum_topics.status 
from 
 forum_forums,
 forum_topics 
where 
 forum_topics.id=$topic
and 
 forum_topics.forumid=forum_forums.id

Poeh, wat een enorme querie, en traag dat hij is ;)

Verwijderd

bla bla bla ;)

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op woensdag 05 december 2001 17:20 schreef Zef het volgende:
bla bla bla ;)
<0.00> ;)

met een uitschieter van <0.29>, maar dat komt omdat .NET geinstalleerd word :)
Pagina: 1