PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jaka jest domyślna kolejność listy zwracanej przez wywołanie filtra Django?

Nie ma BRAK ZAMÓWIENIA DOMYŚLNEGO , punkt, którego nie można wystarczająco podkreślić, ponieważ wszyscy robią to źle.

Tabela w bazie danych nie jest zwykłą tabelą html, to nieuporządkowany zestaw krotek. Często zaskakuje programistów przyzwyczajonych tylko do MySQL, ponieważ w tej konkretnej bazie danych kolejność wierszy jest często przewidywalna, ponieważ nie wykorzystuje ona zaawansowanych technik optymalizacji. Na przykład nie można wiedzieć, które wiersze zostaną zwrócone, ani ich kolejności w żadnym z następujących zapytań:

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

W ostatnim zapytaniu kolejność jest przewidywalna tylko wtedy, gdy wszystkie wartości w kolumnie x są unikalne. RDBMS może zwracać dowolne wiersze w dowolnej kolejności, o ile spełnia warunki instrukcji select.

Chociaż możesz dodać domyślną kolejność na poziomie Django, co powoduje dodanie klauzuli order by do każdego nieuporządkowanego zapytania:

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

Zwróć uwagę, że może to utrudniać wydajność, jeśli z jakiegoś powodu nie potrzebujesz uporządkowanych wierszy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ver.2 BŁĄD PyGreSQL:from _pg import * ImportError:Ładowanie DLL nie powiodło się:Nie można znaleźć określonego modułu

  2. Błąd PG COPY:nieprawidłowa składnia wejściowa dla liczby całkowitej

  3. GROUP BY i agregacja kolejnych wartości liczbowych

  4. Read Committed jest koniecznością w przypadku rozproszonych baz danych SQL zgodnych z Postgres

  5. Tablica jsonb Postgres 9.4 jako tabela