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

Operacje bitowe w Postgres

Use może używać indeksów częściowych, aby obejść fakt, że „&” nie jest operatorem indeksowalnym (afaik):

CREATE INDEX vendors_typeA ON vendors(id) WHERE (type & 2) > 0;
CREATE INDEX vendors_typeB ON vendors(id) WHERE (type & 4) > 0;

Oczywiście za każdym razem, gdy dodajesz nowy typ, musisz dodać nowy indeks. Jest to jeden z powodów, dla których dane są rozszerzane do tabeli asocjacyjnej, którą można następnie poprawnie indeksować. Zawsze możesz napisać wyzwalacze, aby dodatkowo utrzymywać tabelę masek bitowych, ale użyj tabeli wiele do wielu, aby normalnie zarządzać danymi, ponieważ będzie to znacznie bardziej przejrzyste.

Jeśli cała twoja ocena skalowania i wydajności ma powiedzieć „Mogę mieć miliony wierszy”, nie zrobiłeś wystarczająco dużo, aby zacząć tego rodzaju optymalizację. Najpierw utwórz przejrzysty model o odpowiedniej strukturze, a następnie zoptymalizuj go na podstawie rzeczywistych statystyk dotyczących jego działania.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Implementacja konfiguracji wielu centrów danych dla PostgreSQL — część druga

  2. nieprawidłowa sekwencja bajtów do kodowania UTF8

  3. Wskazówki dotyczące dostrajania wydajności PostgreSQL

  4. Jak ustawić domyślny schemat w Yii2

  5. Railsy:PG::InsufficientPrivilege:BŁĄD:odmowa uprawnień dla relacji schema_migrations