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

Hvad er standardrækkefølgen for en liste, der returneres fra et Django-filteropkald?

Der er INGEN STANDARDORDRE , et punkt, der ikke kan understreges nok, fordi alle gør det forkert.

En tabel i en database er ikke en almindelig html-tabel, det er et uordnet sæt af tupler. Det overrasker ofte programmører, der kun er vant til MySQL, fordi rækkefølgen af ​​rækkerne i den pågældende database ofte er forudsigelig, fordi den ikke udnytter nogle avancerede optimeringsteknikker. For eksempel er det ikke muligt at vide, hvilke rækker der vil blive returneret, eller deres rækkefølge i nogen af ​​følgende forespørgsler:

select * from table limit 10
select * from table limit 10 offset 10
select * from table order by x limit 10

I den sidste forespørgsel er rækkefølgen kun forudsigelig, hvis alle værdier i kolonne x er unikke. RDBMS'et kan frit returnere alle rækker i hvilken som helst rækkefølge, så længe det opfylder betingelserne for den valgte erklæring.

Selvom du kan tilføje en standardbestilling på Django-niveauet, hvilket får den til at tilføje en ordre efter klausul til hver ikke-ordrede forespørgsel:

class Table(models.Model):
    ...
    class Meta:
        ordering = ['name']

Bemærk, at det kan være et præstationstræk, hvis du af en eller anden grund ikke har brug for ordnede rækker.



  1. Når autovakuum ikke støvsuger

  2. Hvordan vælger man en understreng i Oracle SQL op til et bestemt tegn?

  3. kodning UTF8 matcher ikke locale en_US; den valgte LC_CTYPE indstilling kræver kodning LATIN1

  4. problem ORA-00001:unik begrænsning overtrådt, kommer i INSERT/OPDATERING