sql >> Databáze >  >> RDS >> PostgreSQL

Jaké je výchozí pořadí seznamu vráceného z volání filtru Django?

Neexistuje ŽÁDNÁ VÝCHOZÍ OBJEDNÁVKA , bod, který nelze dostatečně zdůraznit, protože každý to dělá špatně.

Tabulka v databázi není obyčejná html tabulka, je to neuspořádaná množina n-tic. Často to programátory, kteří jsou zvyklí pouze na MySQL, překvapuje, protože v této konkrétní databázi je pořadí řádků často předvídatelné, protože nevyužívá některé pokročilé optimalizační techniky. Například není možné vědět, které řádky budou vráceny, nebo jejich pořadí v žádném z následujících dotazů:

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

V posledním dotazu je pořadí předvídatelné pouze tehdy, jsou-li všechny hodnoty ve sloupci x jedinečné. RDBMS může vracet libovolné řádky v libovolném pořadí, pokud splňuje podmínky příkazu select.

Ačkoli můžete přidat výchozí řazení na úrovni Django, což způsobí, že ke každému neuspořádanému dotazu přidá pořadí podle klauzule:

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

Pokud z nějakého důvodu nepotřebujete uspořádané řádky, může to být brzda výkonu.



  1. Statistika čekání na koleno:SOS_SCHEDULER_YIELD

  2. Tabulky vs. databáze:Je čas přejít? Část 1

  3. Nelze načíst DLL „OraOps10.dll“

  4. Dynamická SQL LOOP