Zitat:
Zitat von imamk |
Wo ist das denn da falsch sortiert? Sieht für mich nach der Ansicht von 2.txt korrekt aus, allerdings wäre es einfacher nachzuvollziehen wenn du den Nachrichtenzeitstempel auch mit abfragen würdest.
Übrigens solltest du deinen JOIN unbedingt optimieren, aktuell fragst du sämtliche möglichen Kombinationen von Logins und Nachrichten ab und suchst
dann erst mittels WHERE aus, welche zusammengehören. Besser wäre ein LEFT JOIN, bei dem zu jeder Nachricht von vorneherein nur der zugehörige Login abgefragt wird:
Code:
SELECT ... FROM nachrichten n LEFT JOIN login l ON l.id=n.userid WHERE ...
Zur Veranschaulichung: Angenommen du hast 100.000 Nachrichten von 1000 Logins. Bei deiner Variante werden zunächst 1000 * 100.000 = 100.000.000 Datenreihen erstellt und in denen dann gesucht, wo l.id=n.userid gilt. Performance-Killer!
Hilfreich bei der Analyse von Queries auf mehrere Tabellen ist EXPLAIN. Einfach im phpMyAdmin o.ä. die Abfrage mit vorangestelltem EXPLAIN ausführen (EXPLAIN SELECT ...) und du siehst, wie MySQL sie verarbeitet. Tipp: Wenn du große Zahlen, "use filesort" oder "use temporary tables" siehst, könnte die Abfrage problematisch sein.
Mehr Infos dazu:
http://dev.mysql.com/doc/refman/5.1/de/explain.html