PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

index postgresql sur la colonne de chaîne

Pour les vérifications d'égalité simples (= ), un index B-Tree sur un varchar ou text colonne est simple et le meilleur choix. Cela aide certainement les performances beaucoup .

Bien sûr, un index B-Tree sur un simple integer fonctionne mieux. Pour commencer, comparer un simple integer valeurs est un peu plus rapide. Mais plus important encore, la performance est également fonction de la taille de l'index. Une colonne plus grande signifie moins de lignes par page de données, signifie que plus de pages doivent être lues...

Depuis le HomeAddress n'est pas unique de toute façon, ce n'est pas une bonne clé primaire naturelle. Je suggérerais fortement d'utiliser une clé primaire de substitution Au lieu. Un serial colonne est le choix évident pour cela. Son seul but est d'avoir une clé primaire simple et rapide avec laquelle travailler.

Si vous avez d'autres tables référençant ladite table, cela devient encore plus efficace. Au lieu de dupliquer une longue chaîne pour la colonne de clé étrangère, vous n'avez besoin que des 4 octets pour une colonne d'entiers. Et vous n'avez pas besoin d'autant de mises à jour en cascade, car une adresse est vouée à changer, tandis qu'un pk de substitution peut rester le même (mais ce n'est pas obligatoire, bien sûr).

Votre tableau pourrait ressembler à ceci :

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

CREATE INDEX resident_adr_idx ON resident(address);

Il en résulte deux index B-Tree. Un index unique sur resident_id et un index simple sur address .

Plus d'informations sur les index dans le manuel .
Postgres offre de nombreuses options - mais vous n'en avez pas besoin de plus pour ce cas simple.