PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

postgresql индекс на низова колона

За прости проверки за равенство (= ), индекс на B-дърво на varchar или text колоната е проста и най-добрият избор. Със сигурност много помага за производителността .

Разбира се, B-Tree индекс на просто integer се представя по-добре. Като за начало, сравняване на просто integer стойности е малко по-бързо. Но по-важното е, че производителността също зависи от размера на индекса. По-голямата колона означава по-малко редове на страница с данни, означава, че повече страници трябва да бъдат прочетени...

Тъй като HomeAddress така или иначе едва ли е уникален, не е добър естествен първичен ключ. Горещо препоръчвам да използвате сурогатен първичен ключ вместо. serial колона е очевидният избор за това. Единствената му цел е да има прост, бърз първичен ключ за работа.

Ако имате други таблици, препращащи към споменатата таблица, това става още по-ефективно. Вместо да дублирате дълъг низ за колоната с външен ключ, имате нужда само от 4 байта за колона с цели числа. И не е нужно да каскадно обновявате толкова много, тъй като адресът е длъжен да се промени, докато сурогатният pk може да остане същият (но не е задължително, разбира се).

Вашата таблица може да изглежда така:

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

CREATE INDEX resident_adr_idx ON resident(address);

Това води до два индекса на B-Tree. Уникален индекс на resident_id и обикновен индекс на address .

Повече за индексите в ръководството .
Postgres предлага много опции - но нямате нужда от повече за този прост случай.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да посочите списък със стойности за postgresql последователност

  2. SQLAlchemy - състоянието на броя е вярно

  3. Актуализирайте PostgreSQL масив с помощта на SQLAlchemy

  4. Грешка в Ruby/PgSQL при стартиране на Rails:не може да се зареди такъв файл -- pg_ext (LoadError)

  5. PostgreSQL nextval и currval в една и съща заявка