sql >> Database teknologi >  >> RDS >> PostgreSQL

Er ordre efter i udsigt garanteret rækkefølge af udvalgt?

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?



  1. Er der et værktøj til at generere en fuld database DDL til SQL Server? Hvad med Postgres og MySQL?

  2. Oracle:Jeg har brug for en delvis ydre joinforbindelse. Se på billedet

  3. Jeg skal skrive en meget interessant forespørgsel, som beregner nulværdier og rækker med værdier

  4. Hvordan udfyldes nuller for et talfelt?