sql >> Database >  >> RDS >> PostgreSQL

Wat is de standaardvolgorde van een lijst die wordt geretourneerd door een Django-filteraanroep?

Er is GEEN STANDAARD BESTELLING , een punt dat niet genoeg benadrukt kan worden omdat iedereen het verkeerd doet.

Een tabel in een database is geen gewone html-tabel, het is een ongeordende set tupels. Het verbaast vaak programmeurs die alleen aan MySQL gewend zijn, omdat in die specifieke database de volgorde van de rijen vaak voorspelbaar is omdat er geen gebruik wordt gemaakt van enkele geavanceerde optimalisatietechnieken. Het is bijvoorbeeld niet mogelijk om te weten welke rijen worden geretourneerd, of hun volgorde in een van de volgende zoekopdrachten:

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

In de laatste query is de volgorde alleen voorspelbaar als alle waarden in kolom x uniek zijn. Het RDBMS is vrij om rijen in elke gewenste volgorde te retourneren, zolang het voldoet aan de voorwaarden van de select-instructie.

Hoewel je een standaardvolgorde op het Django-niveau kunt toevoegen, waardoor er een volgorde-per-clausule wordt toegevoegd aan elke niet-geordende zoekopdracht:

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

Houd er rekening mee dat het prestatieverlies kan zijn als u om de een of andere reden geen geordende rijen nodig heeft.



  1. "WAARSCHUWING:Mismatch gevonden tussen sl_table en pg_class." in Slony-I

  2. hoe de begin- en einddatum van alle weken tussen twee datums in SQL-server te krijgen?

  3. Database versus tabelruimte, wat is het verschil?

  4. SQL Server cumulatieve som per groep