Er will wahrscheinlich das neueste, deshalb zuerst nach Datum sortieren, und dann nur den ersten ausgeben.
Performence Probleme
Einklappen
X
-
Original geschrieben von Hopka
Es wird ja erst sortiert, und dann wird eine Zeile (die oberste) genommen. Er will halt einen bestimmten Datensatz und nicht irgendeinen (Betonung liegt auf bestimmten und nicht auf Datensatz).
Kommentar
-
Schau dir das mal an:
http://dev.mysql.com/doc/mysql/de/SELECT_speed.html
OffTopic:
Puh, endlich das richtige Forum getroffen... siehe: http://www.php-resource.de/forum/sho...threadid=19451
Kommentar
-
Ein Index beschleunigt in vielen Fällen eine Anfrage. Dabei entscheidet der Anfrageoptimierer, ob er den Index nutzt oder nicht. Mit anderen Worten: Wenn ein Index angelegt ist, musst Du nichts weiter machen. Sollte es vorteilhaft sein diesen zu nutzen, wird es der Optimierer hoffentlich richtig erkennen und ausführen.
Hast Du denn schon einen unterschied in der Anfragezeit feststellen können?
Kommentar
-
Original geschrieben von Ray-D
Ein Index beschleunigt in vielen Fällen eine Anfrage. Dabei entscheidet der Anfrageoptimierer, ob er den Index nutzt oder nicht. Mit anderen Worten: Wenn ein Index angelegt ist, musst Du nichts weiter machen. Sollte es vorteilhaft sein diesen zu nutzen, wird es der Optimierer hoffentlich richtig erkennen und ausführen.
Hast Du denn schon einen unterschied in der Anfragezeit feststellen können?
Kommentar
-
hast Du den Index jetzt schon erstellt? In der Anfrage ändert sich nichts. Diese bleibt so wie sie ist.
Kommentar
-
Wenn Du mit phpMyAdmin arbeitest gibt es eine Checkbox die einen Index automatisch anlegt. Du suchst dir also die Tabelle in phpMyAdmin raus, wählst die Spalte auf die Du den Index legen möchtest und klickst die Checkbox "Index" an. Arbeitest Du hingegen in der SQL-Konsole dann ist dieser Befehl das was Du suchst:
create index <name> on <table> (<column> [ASC | DESC] );
Kommentar
-
Danke, hab ich gefunden, es wird schon erheblich besser, aber trotzdem relativ langsam, ca. 1-2 Sekunden Ladezeit bei 60.000 Einträgen, kann ich da noch was machen? Welchen Zeichenketten-Datentyp sollte ich für den Inhalt des Threads verwenden "Mediumtext"?
Muss ich immer wieder einen Index erstellen?
Wie machen denn das nun die großen Forenhersteller, denn da läuft das ja alles ruckzuck!?
Kommentar
-
Ich weiss nicht genau, wieviele Zeichen Deine Beiträge benötigen aber evtl. kommst Du ja auch schon mit 64K aus, siehe TEXT/BLOB. Damit lassen sich schon ziemlich lange Text schreiben.
TINYTEXT, TINYBLOB Maximal 255 Zeichen (8 bit).
TEXT, BLOB Maximal 65535 Zeichen (16 bit).
MEDIUMTEXT, MEDIUMBLOB Maximal 16777215 Zeichen (24 bit).
LONGTEXT, LONGBLOB Maximal 4294967295 Zeichen (32 bit). Longtext ist mit Vorsicht zu geniessen, da Ein- und Ausgabe meist nicht so viele Zeichen zulassen.
Kommentar
-
Die Großen Forenhersteller machen sich vermutlich sehr viele Gedanken zum Aufbau ihrer Datenbank und zur Anfrageoptimierung, welches ein sehr komplexes Thema ist. Dieses lässt sich wohl leider nicht in ein-zwei Sätzen erklären. Man kann aber einiges dazu im Netz finden.
Wenn es bei Dir immer noch relativ langsam geht, kann es auch am Aufbau des HTML-Teils liegen. Vielleicht kann man hier auch noch Performance rausholen. Oder laufen noch andere Skripte auf der Startseite. Pauschal kann ich Dir das leider nicht beantworten.
Und nein, Du musst nicht immer ein Index erstellen. Dieser verursacht mehr Arbeit auf dem Server beim Einfügen neuer Einträge. Aber ein Index auf den PRIMARY_KEYs ist zum Beispiel oftmals sinnvoll. Hierrüber joint man ja verschiedene Tabellen miteinander oder sucht aus einer großen Datenmenge nur wenige Datensätze raus.
Ich hoffe das hilft ein bisschen beim Verständnis
Kommentar
-
Ja danke, ich habe mal geguckt, z.B. PHPBB macht es so, dass der Text des Threads nochmal einzelln gespeichert wird, ist es eigentlich sinnvoll, z.B. den Username und Userlevel und letzte Aktivität in eine andere Tabelle zu speichern und dann Profil etc. auch in eine andere, bringt das Performencepluspunkte?
Kommentar
Kommentar