Hallo, Forum!
Eine gescheite (tm) Datenbank kann die Daten anhand eines INDEX sortiert ausgeben. Die Reihenfolge der Daten in einer Datenbanktabelle ist Sache des Datenbankservers und NICHT vorhersagbar. Wenn es Produkte gibt, die diese Funktion unterstützen, ist das sicher schön, aber letztendlich eine Besonderheit, die sich ausserhalb der Standards für relationale DBMSe bewegt.
Das heisst im Klartext: Wer sortierte Daten aus einer Datenbank will, _MUSS_ ein ORDER BY angeben. Sinn eines Datenbankservers ist es, eine Abstraktionsschicht für die Datenhaltung bereitzustellen. Eine Ausnahme bilden hier lediglich embedded Datenbanken, die kein SQL sprechen und "von Hand" eingelesen werden müssen.
Eine Tabelle, die häufig abgefragt wird, kann man i.d.R. bei der Anlage passend konfigurieren. Es gilt hier prinzipiell, dass Indizes in Richtung der Sortierung angelegt werden. Zumindestens ORACLE, POSTGRESQL und DB2 unterstützen das sogenannte CLUSTERING von Tabellen, welche die Datenhaltung in der Tabelle in Bezug zu einem existierenden Index optimiert (Bei MYSQL dürfte das Storage-Engine-spezifisch sein).
Es gilt darüber hinaus, dass die DB-Server bzw. die Sitzungskonfiguration ebenfalls die Performance beeinflussen kann. Wenn man beispielsweise den Bufferpool bei INNODB Tabellen groß genug wählt, liegt eine häufig frequentierte Tabelle im Buffer cache und wird pfeilschnell im Speicher sortiert.
Wenn die Datenmenge so groß ist (>10Mio Records), dass eine optimierte Abfrage zur Sortierung herhalten muss, kann man auf das Clustering oder auch auf Partitionierungsfeatures zurückgreifen (was nur was bringt, wenn die Datenmenge nach irgendwas eingeschränkt wird und nach irgendwas partitioniert werden kann).
Gerade bei MySQL sollte man die Menge der selektierten Columns klein halten und wirklich nur das in die Selektion nehmen, was man braucht, da die Menge der Spalten massiv Einfluss auf die Abfrage- und Sortierperformance nimmt.
just my 2 cents.
Grüße
gore