Du kan ikke regne med rækkefølgen af rækker i nogen forespørgsel, der ikke har en eksplicit ORDER BY
klausul. Hvis du forespørger efter en bestilt visning, men du ikke inkluderer en ORDER BY
klausul, bliv positivt overrasket, hvis de er i den rigtige rækkefølge, og forvent ikke, at det sker igen.
Det skyldes, at forespørgselsoptimeringsværktøjet er gratis til at få adgang til rækker på forskellige måder afhængigt af forespørgslen, tabelstatistikker, rækkeantal, indekser og så videre. Hvis den ved, at din forespørgsel ikke har en ORDER BY
klausul, er det gratis at ignorere rækkefølgen for (hoste) at returnere rækker hurtigere.
Lidt off-topic . . .
Sorteringsrækkefølgen er ikke nødvendigvis identisk på tværs af platforme, selv for velkendte sorteringer. Jeg forstår, at sortering af UTF-8 på Mac OS X er særlig mærkeligt. (PostgreSQL-udviklere kalder det brudt .) PostgreSQL er afhængig af strcoll(), som jeg forstår er afhængig af OS-lokaliteterne.
Det er ikke klart for mig, hvordan PostgreSQL 9.1 vil håndtere dette. I 9.1, kan du have flere indekser, hver med en forskellig sortering . En ORDER BY, der ikke specificerer en sortering, vil normalt bruge sorteringen af den underliggende basistabels kolonner, men hvad vil optimeringsværktøjet gøre med et indeks der angiver en anden sortering end en uindekseret kolonne i basistabellen?