Documentation PostgreSQL 15.15 » Internes » Catalogues système » `pg_index`

Précédent | Niveau supérieur | Suivant
53.25. `pg_foreign_table` | Sommaire | 53.27. `pg_inherits`

## 53.26. `pg_index`

Le catalogue `pg_index` contient une partie des informations concernant les index. Le reste se trouve pour l'essentiel dans `pg_class`.

Tableau 53.26. Colonnes de `pg_index`

Type Description
`indexrelid` `oid` (référence `pg_class`.`oid`) OID de l'entrée dans `pg_class` pour l'index
`indrelid` `oid` (référence `pg_class`.`oid`) OID de l'entrée dans `pg_class` de la table sur laquelle porte l'index
`indnatts` `int2` Le nombre total de colonnes dans l'index (duplique `pg_class.relnatts`). Ce nombre inclut les attributs clé et supplémentaires.
`indnkeyatts` `int2` Le nombre de colonnes clés dans l'index, sans compter les colonnes supplémentaires, qui sont simplement enregistrés et ne participent pas à la sémantique de l'index
`indisunique` `bool` Vrai s'il s'agit d'un index d'unicité
`indnullsnotdistinct` `bool` Cette valeur est seulement utilisée pour les index d'unicité. Si sa valeur est false, cet index d'unicité considérera les valeurs NULL comme distinctes les unes des autres (donc l'index peut contenir plusieurs valeurs NULL dans une colonne, ce qui correspond au comportement par défaut de PostgreSQL). Si sa valeur est true, il considérera les valeurs NULL comme égales (donc l'index peut seulement contenir une valeur NULL dans une colonne).
`indisprimary` `bool` Vrai s'il s'agit de l'index de clé primaire de la table (`indisunique` doit toujours être vrai quand ce champ l'est.
`indisexclusion` `bool` Vrai s'il s'agit de l'index supportant une contrainte d'exclusion
`indimmediate` `bool` Si vrai, la vérification de l'unicité est forcée immédiatement lors de l'insertion (inutile si `indisunique` ne vaut pas true)
`indisclustered` `bool` Vrai si la table a été réorganisée en fonction de l'index
`indisvalid` `bool` Si ce drapeau est vrai, l'index est valide pour les requêtes. Faux signifie que l'index peut être incomplet : les opérations `INSERT` / `UPDATE` peuvent toujours l'utiliser, mais il ne peut pas être utilisé sans risque pour les requêtes, et, dans le cas d'un index d'unicité, cette propriété n'est plus garantie.
`indcheckxmin` `bool` Si vrai, les requêtes ne doivent pas utiliser l'index tant que le `xmin` de cette ligne de `pg_index` est en-dessous de leur horizon d'événements `TransactionXmin`, car la table peut contenir des chaînes HOT cassées avec des lignes incompatibles qu'elles peuvent voir.
`indisready` `bool` Si vrai, l'index est actuellement prêt pour les insertions. Faux indique que l'index doit être ignoré par les opérations `INSERT` / `UPDATE`
`indislive` `bool` Si faux, l'index est en cours de suppression et devrait être complètement ignoré (y compris pour les décisions sur la sûreté de HOT)
`indisreplident` `bool` Si vrai, cet index a été choisi comme « identité de réplication » en utilisant `ALTER TABLE ... REPLICA IDENTITY USING INDEX ...`
`indkey` `int2vector` (référence `pg_attribute`.`attnum`) C'est un tableau de valeurs `indnatts` qui indique les colonnes de la table indexées. Par exemple, une valeur `1 3` signifie que la première et la troisième colonne de la table composent la clé de l'index. Les colonnes clés viennent avant les colonnes supplémentaires, non clés. Un 0 dans ce tableau indique que l'attribut de l'index correspondant est une expression sur les colonnes de la table plutôt qu'une simple référence de colonne.
`indcollation` `oidvector` (référence `pg_collation`.`oid`) Pour chaque colonne dans la clé de l'index (`indnkeyatts` values), cette colonne contient l'OID du collationnement à utiliser pour l'index, ou zéro si la colonne n'est pas d'un type de données collationnable.
`indclass` `oidvector` (référence `pg_opclass`.`oid`) Pour chaque colonne de la clé d'indexation (`indnkeyatts` values), contient l'OID de la classe d'opérateurs à utiliser. Voir `pg_opclass` pour plus de détails.
`indoption` `int2vector` C'est un tableau de valeurs `indnkeyatts` qui enregistrent des drapeaux d'information par colonne. La signification de ces drapeaux est définie par la méthode d'accès à l'index.
`indexprs` `pg_node_tree` Arbres d'expression (en représentation `nodeToString()`) pour les attributs d'index qui ne sont pas de simples références de colonnes. Il s'agit d'une liste qui contient un élément par entrée à 0 dans `indkey`. Nul si tous les attributs d'index sont de simples références.
`indpred` `pg_node_tree` Arbre d'expression (en représentation `nodeToString()`) pour les prédicats d'index partiels. Nul s'il ne s'agit pas d'un index partiel.