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

PostgreSQL REINDEX

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. Ils servent de pointeurs pour localiser rapidement les tableaux, améliorant ainsi les performances des requêtes qui impliquent une recherche, un tri ou un filtrage.

Utilisation

Les index sont utilisés pour optimiser les performances des requêtes en réduisant la quantité de données analysées pendant les opérations de la base de données. Ils sont particulièrement utiles pour accélérer les requêtes SELECT qui impliquent des clauses WHERE, des jointures ou des ordres.

CREATE INDEX index_name ON table_name (column_name);

Dans cette syntaxe, CREATE INDEX crée un index nommé index_name sur la colonne spécifiée de table_name.

Exemples

Les exemples suivants illustrent différents types de création d'index et leurs cas d'utilisation :

1. Création d'un index de base

CREATE INDEX idx_customer_name ON customers (name);

Cet exemple crée un index sur la colonne name du tableau customers, ce qui améliore les performances de la requête lors du filtrage par nom de client.

2. Index sur plusieurs colonnes

CREATE INDEX idx_order_date_customer ON orders (order_date, customer_id);

Ici, un index est créé sur les tableaux order_date et customer_id du tableau orders. Ceci est utile pour les requêtes qui filtrent à la fois par la date de la commande et par l'identifiant du client.

3. Index unique

CREATE UNIQUE INDEX idx_unique_email ON users (email);

Cet exemple crée un index unique sur la colonne email du tableau users, ce qui garantit que tous les courriers électroniques sont uniques dans le tableau et améliore la vitesse de recherche.

Types d'index supplémentaires

Considérez ces types d'index supplémentaires disponibles dans PostgreSQL :

  • Index partiels : Index qui ne couvrent qu'un sous-ensemble d'un tableau, défini par une condition.
  • Indices d'expression : Index basés sur une expression plutôt que sur la valeur d'une colonne.
  • Méthodes d'indexation : Diverses méthodes d'indexation telles que B-tree, Hash, GIN et GiST, chacune adaptée à différents types de requêtes.

Conseils et bonnes pratiques

  • Indexer de manière sélective. Ne créez des index que sur les colonnes fréquemment utilisées dans les conditions de la requête afin d'éviter toute surcharge inutile.
  • Surveillez l'utilisation de l'index. Utilisez le site pg_stat_user_indexes de PostgreSQL pour identifier les index inutilisés et envisagez de les supprimer. Par exemple :
    SELECT indexrelid::regclass AS index, idx_scan
    FROM pg_stat_user_indexes
    WHERE idx_scan = 0;
  • Performance de l'équilibre. Si les index accélèrent les opérations de lecture, ils peuvent ralentir les opérations d'écriture comme INSERT, UPDATE, et DELETE.
  • Utilisez des index uniques pour les contraintes. Utilisez des index uniques pour appliquer les règles d'intégrité des données, par exemple en veillant à ce qu'il n'y ait pas de valeurs en double dans une colonne.
  • Pensez à la maintenance de l'index. Utilisez régulièrement le site REINDEX pour reconstruire les index et optimiser leurs performances, en particulier après un chargement massif de données.
  • Analyser les plans de requête. Utilisez la commande EXPLAIN pour comprendre comment les index sont utilisés dans les requêtes et les optimiser en conséquence.
  • Gérer la taille de l'index. Soyez conscient de l'impact potentiel des index sur l'espace disque et réfléchissez au compromis entre les performances de lecture et d'écriture.
  • Conception d'un index sur mesure. Choisissez et concevez des index en fonction de la charge de travail spécifique et des schémas d'interrogation de l'application de base de données.

La création d'un trop grand nombre d'index, en particulier sur les tableaux à forte activité d'écriture, peut avoir un impact négatif sur les performances. Examinez attentivement la nécessité et la conception de chaque index.