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

Skanowanie indeksu w celu porównania wielokolumnowego - niejednolita kolejność kolumn indeksu

PostgreSQL implementuje krotki bardzo dokładnie (w przeciwieństwie do połowicznych implementacji występujących w Oracle, DB2, SQL Server itp.). Możesz zapisać swój warunek za pomocą „nierówności krotek”, jak w:

select * 
from table1
where (a, -b, c) >= (10, -20, 30)
order by a, -b, c
limit 10

Należy pamiętać, że ponieważ druga kolumna jest w porządku malejącym, podczas porównywania należy „odwrócić” jej wartość. Dlatego jest wyrażony jako -b a także -20 . Może to być trudne w przypadku kolumn nienumerycznych, takich jak daty, varchary, LOB itp.

Wreszcie, użycie indeksu jest nadal możliwe z -b wartość kolumny, jeśli tworzysz indeks ad hoc, na przykład:

create index ix1 on table1 (a, (-b), c);

Jednak nigdy nie można zmusić PostgreSQL do korzystania z indeksu. SQL jest językiem deklaratywnym, a nie imperatywnym. Możesz przyciągnąć aby to zrobić, aktualizując statystyki tabeli, a także wybierając niewielką liczbę wierszy. Jeśli Twój LIMIT jest za duży, PostgreSQL może zamiast tego użyć pełnego skanowania tabeli.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego liczba adnotacji w Django (1.6) jest tak wolna?

  2. Jak używać podzapytań w SQLAlchemy do tworzenia średniej ruchomej?

  3. Czy postgresql obsługuje lookbehind regexp?

  4. polecenie kopiowania postgres, plik binarny

  5. TypeError:obiekt typu „DataFrame” nie jest możliwy do serializacji w formacie JSON