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

indeks postgresql w kolumnie string

Proste sprawdzanie równości (= ), indeks B-Tree na varchar lub text kolumna jest prosta i jest najlepszym wyborem. Z pewnością poprawia wydajność bardzo .

Oczywiście indeks B-Tree na prostej integer działa lepiej. Na początek porównując proste integer wartości są nieco szybsze. Ale co ważniejsze, wydajność jest również funkcją wielkości indeksu. Większa kolumna oznacza mniej wierszy na stronę danych, co oznacza, że ​​trzeba przeczytać więcej stron ...

Od HomeAddress i tak nie jest unikalny, nie jest to dobry naturalny klucz podstawowy. Zdecydowanie sugeruję użycie zastępczego klucza podstawowego zamiast. serial kolumna to oczywisty wybór. Jego jedynym celem jest posiadanie prostego, szybkiego klucza podstawowego do pracy.

Jeśli masz inne tabele odwołujące się do tej tabeli, staje się to jeszcze bardziej wydajne. Zamiast duplikować długi ciąg dla kolumny klucza obcego, potrzebujesz tylko 4 bajtów dla kolumny liczb całkowitych. I nie musisz tak bardzo kaskadować aktualizacji, ponieważ adres musi się zmienić, podczas gdy zastępczy pk może pozostać taki sam (ale oczywiście nie musi).

Twój stół może wyglądać tak:

CREATE TABLE resident (
   resident_id serial PRIMARY KEY
  ,address text NOT NULL
   -- more columns
);

CREATE INDEX resident_adr_idx ON resident(address);

Daje to dwa indeksy B-Tree. Unikalny indeks na resident_id i zwykły indeks na address .

Więcej o indeksach w podręczniku .
Postgres oferuje wiele opcji - ale w tym prostym przypadku nie potrzebujesz ich więcej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sprawdź liczbę miesięcy między 2 datami

  2. Żółw ORM dla Pythona nie zwraca relacji encji (Pyndantic, FastAPI)

  3. Jak mogę uzyskać nazwę tabeli w funkcji wyzwalacza PostgreSQL?

  4. Wybierz typ danych pola w postgresie

  5. Jak przekonwertować tablicę 2d z PostgreSQL DB na tablicę java 2d za pomocą JDBI?