Ik ben nu al een tijdje bezig met een forum en heel heel systeem daarrond. Maar ik heb gisteren bij elke mysql_query() $qu++; (om te tellen hoeveel query's ik uitvoer) eens gezet, en dan onderaan de pagina dat getal echo't. Bij somige pagina's vond ik dat getal wel rederlijk groot. Wat is nou eigenlijk de gemiddelde aantal mysql_query()'s die je eigenlijk maar per pagina zou mogen uitvoeren om niet alles plat te gooien?
EDIT: nog een vraagje: is er een mySQL functie zoals de PHP functie: strtolower? (zie ook post2 op pagina2)
Ik gebruik op sommige pagina's 87 queries (zal ooit wel eens cache doen om dat naar omlaag te brengen) en dat werkt nog. Ik denk dat vanaf de 50 de paginatijd wat zal toenemen, maar niet zoveel hoor. Hoeveel queries heb je op die pagina's soms.
Je kunt wel een paar honderd op 1 pagina gebruiken zonder significant verlies in snelheid, kijk maar naar phpBB3, met een paar honder queries per pagina (natuurlijk gecached, maar dat is net zo snel)
Nja ik ben nu m'n systeem aan het aanpassen dat ik veel minder nodig heb, eerste had ik er per post (zoals dit dus) 5 nodig -_-'' nu nog 1
5 (/post, is nu al 1 geworden) * 15 (per pagina) + 5 ( firstpost is nu ook al 1 geworden) + 3 statistieken systeem en nog wel een paar denk ik.
voor 3 postinds zat ik al 44 query's nu heb ik al na de verbouwing naar 20 gekregen en dus per extra post op de pagina komt er dus nog maar 1tje bij
op de forum index heb weer zoveel ingebruik, ik gebruik daar zo'n 5 query's per sub-categorie (voor het gelezen/ongelezen systeem)
EDIT: @ hierboven: ok, dan is het goed m'n pagina's vond ik ook nog wel snel laden, ik heb ook wel een betalend domeintjes, bij gratis zal wat wel wat anders zijn.
EDIT2: het gebruik van mysql_free_result() helpt dat ook om de laadtijd (enz) toch nog wat te drukken?
Ik gebruik op sommige pagina's 87 queries (zal ooit wel eens cache doen om dat naar omlaag te brengen) en dat werkt nog. Ik denk dat vanaf de 50 de paginatijd wat zal toenemen, maar niet zoveel hoor. Hoeveel queries heb je op die pagina's soms.
w00t
Hoe kom je in hemelsnaam aan zoveel query's. Gebruik je je query's in een loop ?
je WHILE'd eerst de categorie's en in die categorie WHILE je de sub-categorie'en in alle sub-categorie'en.
Laaste bericht (on)-gelezen in sub-cat
Die topics kan wel/geen berichten hebben, indien die er wel heeft, het laatse id ophalen en kijken of die gelzen is. indien er dan geen reacties waren op dat topic, dan kun je of je de openings post heb gelezen. + dan de datum + de posten ophalen
Ergens ongelezen berichten in sub-cat
Alle topics uit die categorie aflopen, bij de nieuwste te beginnen. als je een topic vind kijken of het reacties heeft. zoja dan pak je het laaste id en je kijkt of het gelzen is. als het topic geen berichten had, kijken of het topic gelezen is, en dit dan voor alle sub-categorieen
als je dan 5 categories hebt met elk nog geen eens gemiddled 5 sub-categorie'en dan heb je heel wat query's achter de rug.
wat was mijn logica achten een forum maken, wat me ook gelukt is, maar toen ik zag dat het zoveel query's waren wouw ik weten of dat eigenlijk gezond was.
Het lijkt me dat je het met een of meerdere INNER JOINS allemaal wel kan indimmen, Ik heb nog nooit een "compleet" forum gemaakt, dus kan er niet echt overmee praten maar vind rond de 80 query's wel extreem veel
Uhm, vreemd ... ? Cachen gebeurt op de achtergrond. Een pagina zonder queries zou toch sneller zijn.
Opmerking: wanneer je joins gebruikt, gaat het aantal queries omlaag, maar het geheel wordt niet sneller. Een join is namelijk trager dan een normale query.
De snelheid hangt verder af van de gegevens die je selecteert. SELECT kolom1, kolom2, kolom3 is doorgaans sneller dan SELECT *. Verder kun je met mysql_free_result() het queryresultaat verwijderen, wanneer je dat niet meer nodig hebt.
Verder speelt de servercapaciteit (en het totale geheugen en het geheugen voor MySQL) een grote rol.
Als ik 2 query's uitvoer, en met met microtime (of hoe dat ook noemt) de parse tijd bekijk, en vergelijk met die 44 query's is deze verdubbeld en niet ver-22-vouwdigd: ik zit dan nog maar 0.02*** seconden. En bij 24 query's (homepage) heb ik een parse time van: 0.0195***. dus 24 <-> 44 doet niet veel.
Maar mijn vraag is NIET wanner JIJ vind dat je JIJ veel query's ehbt uitgevoert maar wanneer het ECHT te veel gaat worden.
EDIT: Heb al al enkele tut's bekeken over JOINS enz. maar ik zie niet echt in hoe ik daardoor véél query's zou uitsparen, en JOINS maken de query's ook niet sneller, dus ik zie niet in waarom ik met joins zou werken als het zonder gaan, en ik heb nog NERGENS "SELECT * FROM" gadaan , ik selecteer enkel wat ik nodig zal hebben.
EDIT2: Bestaat er een MySQL-functie die hetzelfde doet als in PHP strtolower.
om te kijken of een naam/e-mailadress gebant is. en dat het dus niet mogelijk is om de naam 'Me' te gebuiken terwijl 'eM' wel gebant is. Wat imo hetzelfde is en ik niet wil toelaten