Tabela nie ma naturalnej kolejności wierszy, niektóre systemy baz danych odrzucą zapytanie, jeśli nie dodasz ORDER BY
klauzula na końcu SELECT
Dlaczego kolejność się zmieniła?
Ponieważ aparat bazy danych pobiera wiersze w kolejności fizycznej, w której pochodzą z magazynu. Niektóre silniki, takie jak SQL Server, mogą mieć CLUSTERED INDEX
co wymusza fizyczną kolejność, ale nadal nigdy nie ma gwarancji, że otrzymasz wyniki w tej dokładnej kolejności.
Indeks klastrowy istnieje głównie jako optymalizacja. PostgreSQL ma podobny CLUSTER
funkcja zmiany kolejności fizycznej, ale jest to ciężki proces, który blokuje tabelę:http://www.postgresql.org/docs/9.1/static/sql-cluster.html
Jak wymusić alfabetyczną kolejność wierszy?
Dodaj ORDER BY
klauzula w zapytaniu.
SELECT * FROM table ORDER BY column