Größeres Datenbank Web-Projekt mit MySQL-Performancesorgen
-
Aufgrund eines dummen zufalls muss ich mich seit langer zeit wieder mit php+mysql beschäftigen. Das große Problem ist, dass ich nicht wirklich ahnung davon hab, wie man effiziente datenbank querys schreibt. Ich bin auch wie gesagt nur durch einen zufall an diese aufgabe bekommen, derjenige, der das eigentlich machen sollte, für mehre Wochen ausfällt, und ich der einzige sonst im team bin, der sich halbwegs mit php auskennt(ich sollte eigentlich einen client dafür schreiben).
Ich hab mich zu anfang daran orientiert, wie ich das in C++ programmieren würde, also viele kleine funktionen die viele kleine aufgaben erledigen.
Nun hab ich zwar einen relativ gut lesbaren code, aber aufgrund der tabellenstruktur hab ich sehr viele querys.hier mal ein Ausschnitt der tabellenstruktur:
tabelle raid raidId|name|... | tabelle run raidid|runid|... | tabelle teilnehmer runid|spielerid|... | ...noch einige weitere tabellen
Es existieren also relativ viele verknüpfungen zwischen den tabellen.
so sieht zb ein query aus, dass ich mir erstmal aus der tabelle "run" alle einträge suche, bei der die raidid einen bestimmten wert hat. danach besorg ich mir für jeden run aus der tabelle teilnehmer eine liste aller teilnehmer(pro eintrag ein spieler), und schlussendlich noch aus diversen anderen tabellen für jeden spieler weitere informationen.
kurz gesagt: bei einem raid mit 10 runs und jeweils 40 teilnehmern, hab ich weit mehr als 400 querys. Nun hab ich natürlich angst, dass die seite nach einer weile lahm wie eine schnecke wird, und suche ein paar tipps dazu, wie ich die querys effektiver gestalten kann, oder was ihr für techniken benutzt, um mit vielen querys umzugehen.
Vielleicht gibt es ja noch einen weg, um mit diesen vielen kleinen funktionen weiterarbeiten zu können, da auf verschiedenen seiten zb abgefragt werden muss, an welchen runs ein spieler teilgenommen hat, und ich sonst bei großen funktionen viel code wiederholen müsste.wenn ihr einen überblick dafür bekommen wollt, was das für ein projekt wird, gibt es hier ein ähnliches projekt. Der unterscheid ist nur, dass wir andere datenstrukturen aufgrund anderer berechnungssysteme benutzen müssen.
-
BTW: Das scheint doch für ein diabloisches Spiel gedacht zu sein? Es wird dir bestimmt niemand helfen dein Leben zu ruinieren :p
kurz gesagt: bei einem raid mit 10 runs und jeweils 40 teilnehmern, hab ich weit mehr als 400 querys.
?
SELECT t.spielerid FROM teilnehmer t, run r, raid ra WHERE ra.raidid=r.raidid AND r.runid = t.runid;
MfG SideWinder