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

Czy zamówienie według widoku gwarantuje kolejność wyboru?

Nie możesz liczyć na kolejność wierszy w żadnym zapytaniu, które nie ma jawnego ORDER BY klauzula. Jeśli wysyłasz zapytanie do uporządkowanego widoku, ale nie zawierasz ORDER BY klauzuli, bądź mile zaskoczony, jeśli są w odpowiedniej kolejności i nie oczekuj, że to się powtórzy.

Dzieje się tak, ponieważ optymalizator zapytań może swobodnie uzyskiwać dostęp do wierszy na różne sposoby, w zależności od zapytania, statystyk tabeli, liczby wierszy, indeksów itd. Jeśli wie, że Twoje zapytanie nie ma ORDER BY klauzuli, można zignorować kolejność wierszy w celu (kaszel) szybszego zwracania wierszy.

Nieco nie na temat . . .

Kolejność sortowania niekoniecznie jest identyczna na różnych platformach, nawet w przypadku dobrze znanych zestawień. Rozumiem, że sortowanie UTF-8 w systemie Mac OS X jest szczególnie dziwne. (Programiści PostgreSQL nazywają to złamanym .) PostgreSQL opiera się na strcoll(), które, jak rozumiem, opiera się na ustawieniach regionalnych systemu operacyjnego.

Nie jest dla mnie jasne, jak PostgreSQL 9.1 sobie z tym poradzi. W wersji 9.1 możesz mieć wiele indeksów, każdy z innym sortowaniem . ORDER BY, które nie określa sortowania, zwykle używa sortowania kolumn podstawowej tabeli bazowej, ale co zrobi optymalizator z indeksem który określa inne sortowanie niż nieindeksowana kolumna w tabeli podstawowej?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmień kolumny PostgreSQL używane w widokach

  2. postgresql:offset + limit działa bardzo wolno

  3. Wykonaj zapytanie na podstawie JSON przechowywanego w kolumnie

  4. Jak uzyskać wczorajszą datę w PostgreSQL

  5. Jaki jest odpowiednik CHARINDEX (SQL SERVER) w POSTGRRESQL?