Do. 23.07.2009
19:37 Uhr
#2
- Registriert seit
- 25.04.2009
- Beiträge
- 543
- Beitragswertungen

Ich kenn die Rahmenbedingungen natürlich nicht, aber um damit die Performance spürbar zu verbessern, muss das schon eine gigantische Tabelle sein.
Und selbst dann dauert die query selbst im Normalfall < 1ms.
Wenn du die MySQL Performance wirklich verbessern willst, würde ich eher zu Cache Optimierungen in der mysql Config und einem vernünftigen Index in der Tabelle raten.
Und auf PHP Seite solltest du mal schauen, ob du über SELECT COUNT() z.B. auch zum gewünschten Ergebnis kommen kannst, um auf eventuelle Schleifen und ähnliches verzichten zu können.
Bei einer Online/Offline Abfrage (laut den Variablen), sollte das eigentlich machbar sein.
Kein Support per Email oder ICQ!
Do. 23.07.2009
21:21 Uhr
#3
- Registriert seit
- 14.02.2007
- Beiträge
- 372
- Beitragswertungen

Die Tabellen können sehr gigantisch werden
Und noch mal eine kurze Erklärung:
Ich unterscheide aus dem Grunde zwischen Offline und Online,
weil in dem Moment bei mir einige Felder weg fallen, die nicht übertragen
werden müssen. Deshalb fragte ich auch, wie ich diese Abfrage zusammen führen könne.
Zuletzt modifiziert von Cartment am 23.07.2009 - 21:21:52
Do. 23.07.2009
21:57 Uhr
#4
- Registriert seit
- 25.04.2009
- Beiträge
- 543
- Beitragswertungen

Wie gesagt, wenn du wirklich was an der SQL Performance optimieren willst, erstmal an der MySql Config ansetzen.
Davon gibt's genug vorgefertigte im Netz, einfach mal nach "my.cnf" oder "mysql optimieren" suchen.
Dort findest du gute Tipps.
Zuerst die querys zu optimieren, ist der falsche Ansatz und bringt auch kaum was.
Das kann man höchstens als Feintuning bezeichnen.
Du kannst im phpmyadmin auch mal ein Blick in die Laufzeit Informationen riskieren, dort siehst du, was auf dem Server wirklich los ist.
Rot markierte Werte und ihre Erläuterung geben Aufschluss darüber, wo optimiert werden sollte.
Kein Support per Email oder ICQ!
Do. 23.07.2009
22:13 Uhr
#5
- Registriert seit
- 01.05.2009
- Beiträge
- 2.989
- Beitragswertungen

1 2 3 4 5 6 7 8 | $statusqry =db_query("SELECT a, b, c FROM table WHERE x= blubb");
if ($statusqry == 1) {
$userstatus = 'offline';
}
else {
$userstatus = 'online';
}
|
Alle Module von mir sind nun unter php-gecko.de erreichbar
Fr. 24.07.2009
00:18 Uhr
#6
- Registriert seit
- 24.06.2009
- Beiträge
- 44
- Beitragswertungen

wenn er mehr als 2 stati in x hatte ginge auch
1 | $statusqry =db_query("SELECT a, b, c FROM table WHERE x in ('1','0')");
|
oder
1 | $statusqry =db_query("SELECT a, b, c FROM table WHERE x = 1 or x =0");
|
oder
1 | $statusqry =db_query('SELECT a, b, c,CASE x WHEN "0" THEN "Offline" ELSE "Online" END as userstatus FROM table') ;
|
aber ich denke nicht das auf deiner seite so viele queries gemacht werden das sich dadurch eine bemerkbare perfomance steigerung feststellen lässt.
Und ohne genauere Angaben lässt sich eben recht wenig optimieren
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Fr. 24.07.2009
06:05 Uhr
#7
- Registriert seit
- 14.02.2007
- Beiträge
- 372
- Beitragswertungen

Also gut. Wenn ich sage das sie größer ist dann wird sie schon größer sein.
Un zwar besitzt diese rund 16 Felder mit rund 5000 Einträgen(+), die minütlich von a nach b transferiert werden müssen. Deshalb auch die Einschränkung zwischen offline und online. Nun war lediglich meine Frage wie ich, die beiden gegebenen Abfragen vereinen könnte, da ich a, natürlich meine Server config verändere, da mir für meinen Fall nichts anderes übrig bleibt und b, ich das mit der Optimierung, lediglich für ein besseres Hintergrundwissen angeschrieben habe.
Sa. 25.07.2009
10:50 Uhr
#9
- Registriert seit
- 16.06.2006
- Beiträge
- 15.334
- Beitragswertungen

Naja du kannst es einfach als eine Abfrage machen, es ist von der Performance her recht egal wie viele Spalten du aus einer Zeile abfragst, die Frage ist ja auch, wie du es weiterverarbeitest bzw. was du machen willst.
Sa. 25.07.2009
10:58 Uhr
#10
- Registriert seit
- 24.06.2009
- Beiträge
- 44
- Beitragswertungen


Zitat geschrieben von
BobGrey
das bringt ihm in seinem fall rein gar nichtsausser evtl verwirrung
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Sa. 25.07.2009
15:29 Uhr
#11
- Registriert seit
- 14.02.2007
- Beiträge
- 372
- Beitragswertungen

Das ist es ja, ich würde ja gerne die beiden Abfragen vereinen.
Nur weis ich nicht wie. Das mit der optimiererei und Performance,
sollte lediglich als Hintergrundwissen dienen und nicht als Frage
Zuletzt modifiziert von Cartment am 25.07.2009 - 15:29:24
So. 26.07.2009
10:01 Uhr
#12
- Registriert seit
- 16.06.2006
- Beiträge
- 15.334
- Beitragswertungen

Wie gesagt, wenn du mehr Informationen geben würdest, wie du die Daten vor allem nach der Abfrage dann brauchst, könnte man ja mal etwas Code geben, du kannst in einer Abfrage allerdings nicht verschiedene Spaltenanzahlen abfragen, also wenn dann nur alle, bei deinem Bsp. a - f