Wiedmann wrote:wenn mich nicht alles täuscht, gibt es doch eine interne sortierung bei den tabellen ?!
Eigentlich nicht wirklich.
Doch, gibt es wirklich. Das ist die Default-Sortierung, wenn ansonsten keine ORDER Klausel angegeben wird.
Man erreicht diese Sortierung (die normalerweise nach dem Primärkey geschieht - aber man kann es ändern), indem man via ALTER die Tabelle ändert:
- Code: Select all
ALTER TABLE tabellenname ORDER BY feldname
Bei der ORDER-Klausel können natürlich alle Angaben wie in einem SELECT gemacht werden (mehrere Felder, ASC oder DESC usw.).
Anschließend ist jede SELECT ... FROM tabellenname nach dieser Sortierung sortiert. Das ist durchaus sinnvoll, wenn man die Performance optimieren will, weil man beispielsweise sowieso immer nach dem Nachnamen o.ä. sortieren würde (was im SELECT geschieht).
Wichtig: wenn im SELECT auch ORDER BY angegeben wird, aber es ist die gleiche Reihenfolge wie bereits im ALTER, so "bemerkt" MySQL dies und wird nicht unnötig eine neue Sortierung durchführen. Deswegen empfehle ich grundsätzlich auch bei SELECT eine ORDER BY Klausel anzugeben, wenn es auf eine bestimmte Sortierung ankommt. Es kostet keine Performance, ist aber portabler und insbesondere transparenter programmiert, vor allem aber besser wartbar (einfacher nachzuvollziehen).