sql >> Databasteknik >  >> RDS >> PostgreSQL

Har beställning av i sikte garanterat ordning av urval?

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?



  1. Det går inte att ansluta till någon av de angivna MySQL-värdarna när anslutningen kontrolleras

  2. Bästa sättet att stoppa en enda person från att skapa flera konton

  3. långsam mysql-fråga som måste köras hundratusentals gånger per timme

  4. Hur kan jag fylla en kolumn med slumptal i SQL? Jag får samma värde i varje rad