Nie możesz liczyć na kolejność wierszy w żadnym zapytaniu, które nie ma jawnego ORDER BY
klauzula. Jeśli wysyłasz zapytanie do uporządkowanego widoku, ale nie zawierasz ORDER BY
klauzuli, bądź mile zaskoczony, jeśli są w odpowiedniej kolejności i nie oczekuj, że to się powtórzy.
Dzieje się tak, ponieważ optymalizator zapytań może swobodnie uzyskiwać dostęp do wierszy na różne sposoby, w zależności od zapytania, statystyk tabeli, liczby wierszy, indeksów itd. Jeśli wie, że Twoje zapytanie nie ma ORDER BY
klauzuli, można zignorować kolejność wierszy w celu (kaszel) szybszego zwracania wierszy.
Nieco nie na temat . . .
Kolejność sortowania niekoniecznie jest identyczna na różnych platformach, nawet w przypadku dobrze znanych zestawień. Rozumiem, że sortowanie UTF-8 w systemie Mac OS X jest szczególnie dziwne. (Programiści PostgreSQL nazywają to złamanym .) PostgreSQL opiera się na strcoll(), które, jak rozumiem, opiera się na ustawieniach regionalnych systemu operacyjnego.
Nie jest dla mnie jasne, jak PostgreSQL 9.1 sobie z tym poradzi. W wersji 9.1 możesz mieć wiele indeksów, każdy z innym sortowaniem . ORDER BY, które nie określa sortowania, zwykle używa sortowania kolumn podstawowej tabeli bazowej, ale co zrobi optymalizator z indeksem który określa inne sortowanie niż nieindeksowana kolumna w tabeli podstawowej?