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

Co indeksować w zapytaniach z dużą ilością kolumn w klauzuli WHERE

Musisz dowiedzieć się, co WHERE klauzul, których zamierzasz użyć w tym zapytaniu, jak często każde z nich wystąpi i jak selektywny będzie każdy warunek.

  • Nie indeksuj zapytań, które występują rzadko, chyba że musisz.

  • Użyj indeksów wielokolumnowych, zaczynając od tych kolumn, które pojawią się w = porównanie.

  • Jeśli chodzi o kolejność kolumn w indeksie wielokolumnowym, zacznij od tych kolumn, które będą używane w zapytaniu samodzielnie (indeks może być użyty w zapytaniu zawierającym tylko niektóre z jego kolumn, pod warunkiem, że znajdują się one na początku indeksu).

  • Możesz pominąć kolumny o niskiej selektywności, takie jak gender .

Na przykład w przypadku powyższych zapytań, jeśli wszystkie są częste i wszystkie kolumny są selektywne, te indeksy będą dobre:

... ON apartments (city_id, rooms, size)

... ON apartments (area_id, ad_type, price)

... ON apartments (area_id, ad_type, published_at)

Te indeksy mogą być również używane do WHERE klauzule zawierające tylko area_id lub city_id w nich.

Źle jest mieć zbyt wiele indeksów.

Jeśli powyższa metoda prowadziłaby do zbyt wielu indeksów, np. ponieważ użytkownik może wybrać dowolne kolumny dla WHERE klauzuli, lepiej jest indeksować pojedyncze kolumny lub czasami pary kolumn, które regularnie idą w parze.

W ten sposób PostgreSQL może wybrać skanowanie indeksu mapy bitowej połączyć kilka indeksów dla jednego zapytania. To mniej wydajne niż zwykłe skanowanie indeksu , ale zwykle lepsze niż skanowanie sekwencyjne .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Monitorowanie dystrybucji Percona dla PostgreSQL — kluczowe metryki

  2. SqlAlchemy(Flask+Postgres) :Jak zaktualizować tylko określony atrybut pola json?

  3. Jak uruchomić Jasmine wcześniejWszystko dla wszystkich plików testowych

  4. Nie można uruchomić Postgresa

  5. Jak usunąć kropkę w to_char, jeśli liczba jest liczbą całkowitą?