PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

índice postgresql na coluna de string


Para verificações de igualdade simples (= ), um índice B-Tree em um varchar ou text coluna é simples e a melhor escolha. Certamente ajuda o desempenho muito .

Claro, um índice B-Tree em um simples integer executa melhor. Para iniciantes, comparando integer simples valores é um pouco mais rápido. Mas, mais importante, o desempenho também é uma função do tamanho do índice. Uma coluna maior significa menos linhas por página de dados, significa que mais páginas precisam ser lidas...

Como o HomeAddress dificilmente é único, não é uma boa chave primária natural. Eu sugiro fortemente usar uma chave primária substituta em vez de. Um serial coluna é a escolha óbvia para isso. Seu único propósito é ter uma chave primária simples e rápida para trabalhar.

Se você tiver outras tabelas referenciando essa tabela, isso se tornará ainda mais eficiente. Em vez de duplicar uma string longa para a coluna de chave estrangeira, você só precisa dos 4 bytes para uma coluna de inteiro. E você não precisa fazer tantas atualizações em cascata, já que um endereço é obrigado a mudar, enquanto um pk substituto pode permanecer o mesmo (mas não precisa, é claro).

Sua tabela pode ficar assim:
CREATE TABLE resident (
   resident_id serial PRIMARY KEY
  ,address text NOT NULL
   -- more columns
);

CREATE INDEX resident_adr_idx ON resident(address);

Isso resulta em dois índices B-Tree. Um índice exclusivo em resident_id e um índice simples em address .

Mais sobre índices no manual .
O Postgres oferece muitas opções - mas você não precisa de mais para este caso simples.