Du kan inte räkna med ordningen på rader i någon fråga som inte har en explicit ORDER BY
klausul. Om du frågar efter en beställd vy, men du inte inkluderar en ORDER BY
klausul, bli positivt överraskad om de är i rätt ordning och förvänta dig inte att det ska hända igen.
Det beror på att frågeoptimeraren är fri att komma åt rader på olika sätt beroende på frågan, tabellstatistik, radantal, index och så vidare. Om den vet att din fråga inte har en ORDER BY
klausul, det är gratis att ignorera radordning för att (hosta) att returnera rader snabbare.
Något utanför ämnet . . .
Sorteringsordningen är inte nödvändigtvis identisk på olika plattformar även för välkända sorteringar. Jag förstår att sortering av UTF-8 på Mac OS X är särskilt udda. (PostgreSQL-utvecklare kallar det trasigt .) PostgreSQL förlitar sig på strcoll(), vilket jag förstår förlitar sig på OS-lokalerna.
Det är inte klart för mig hur PostgreSQL 9.1 kommer att hantera detta. I 9.1, kan du ha flera index, alla med olika sortering . En ORDER BY som inte anger en sortering kommer vanligtvis att använda sorteringen av den underliggande bastabellens kolumner, men vad kommer optimeraren att göra med ett index som anger en annan sortering än en oindexerad kolumn i bastabellen?