Accéder au contenu principal
Documents
Gestion des tableaux et des schémasSyntaxe de baseDéclencheursBases de donnéesFonctions de la dateFonctions des chaînes de caractèresFonctions mathématiquesFonctions JSONIndexes

Index de hachage PostgreSQL

Les index dans PostgreSQL sont des objets de base de données qui améliorent la vitesse des opérations de recherche de données sur un tableau de base de données. Les index de hachage sont utilisés pour localiser rapidement des tableaux sur la base de comparaisons d'égalité.

Utilisation

Les index de hachage sont particulièrement utiles lorsque les requêtes impliquent des conditions d'égalité, telles que `=`. Ils ne sont pas adaptés aux requêtes de portée et sont créés en utilisant l'instruction `CREATE INDEX` avec l'option `USING HASH`.

sql
CREATE INDEX index_name
ON table_name USING HASH (column_name);

Dans cette syntaxe, `USING HASH` spécifie le type d'index à créer sur `nom_colonne` de `nom_table`.

Exemples

1. Création d'un index de hachage de base

sql
CREATE INDEX customer_id_hash
ON customers USING HASH (customer_id);

Ceci crée un index de hachage sur la colonne `customer_id` du tableau `customers`, améliorant ainsi les performances des recherches d'égalité sur `customer_id`.

2. Index de hachage sur plusieurs colonnes

sql
CREATE INDEX employee_name_hash
ON employees USING HASH ((first_name || last_name));

Cet exemple crée un index de hachage sur la concaténation des colonnes `first_name` et `last_name` dans le tableau `employees`, utile pour les recherches d'égalité sur le nom complet.

3. Index de hachage conditionnel

sql
CREATE INDEX active_customer_hash
ON customers USING HASH (customer_id)
WHERE status = 'active';

Un index partiel est créé pour `customer_id` dans le tableau `customers`, mais seulement pour les tableaux où `status` est `active`, optimisant ainsi les requêtes qui filtrent sur cette condition.

Conseils et bonnes pratiques

  • A utiliser pour les recherches sur l'égalité. Les index de hachage sont idéaux pour les opérations `=` mais pas pour les requêtes de portée.
  • Combinez avec des contraintes. Associez les index de hachage à des contraintes uniques, le cas échéant, pour garantir l'intégrité des données.
  • Envisagez des alternatives. Evaluez si un index B-tree ne serait pas plus approprié, car il supporte un plus grand nombre de types de requêtes et est le type d'index par défaut dans PostgreSQL.
  • Contrôler les performances. Analysez et contrôlez régulièrement l'utilisation des index pour vous assurer qu'ils offrent des avantages en termes de performances. Utilisez des outils comme `pg_stat_user_indexes` pour aider à évaluer la performance des index.
  • Soyez conscient des problèmes de durabilité. Les index de hachage ne sont pas verrouillés par WAL, ce qui affecte la durabilité et les capacités de récupération. Cela peut être une considération critique dans les systèmes où la durabilité des données est vitale.
  • Planifiez l'entretien. Les index de hachage peuvent ne pas être reconstruits automatiquement lors des mises à jour de PostgreSQL, ce qui peut conduire à une perte de fonctionnalité s'ils ne sont pas gérés correctement. Une réindexation périodique peut être nécessaire pour maintenir les performances.
  • Connaître les limites. Les index de hachage sont moins couramment utilisés que les index B-tree en raison de leur utilisation spécifique pour les recherches d'égalité et de l'absence de prise en charge des requêtes de plage. Tenez compte des besoins spécifiques de votre application lors du choix du type d'index.