Comment lister les index d’une base de données Ingres ?

Avec des requêtes SQL sur les tables système iiindexes et iiindex_columns, il est possible d’afficher dans une base de données Actian Ingres tous les index, les index d’une table spécifique ainsi que les colonnes qu’ils contiennent. Il est également possible de vérifier si un champ de table spécifique est inclus dans un index. Les requêtes SELECT et JOIN appropriées sont expliquées à l’aide d’exemples concrets.

Vous trouverez ici comment lister tous les index d’une base de données Ingres, ou tous les index d’une table spécifique, ou bien vérifier si un champ est compris dans un index.

Les index d’une base de données Actian Ingres peuvent être affichés via des requêtes SELECT classiques.

Pour afficher tous les index existants de toutes les tables, il suffit d’interroger la table iiindexes :

SELECT * FROM iiindexes

Cependant, on souhaite souvent voir uniquement les index d’une certaine table. Pour cela, on complète la requête SQL avec une clause WHERE appropriée. (Le champ iiindexes.base_name contient le nom de la table.) Il suffit de remplacer tablename par le nom de la table recherchée :

SELECT * FROM iiindexes WHERE base_name = 'tablename'

Les requêtes précédentes ne listent que les noms des index correspondants – sans montrer les champs/colonnes inclus dans l’index. Pour afficher toutes les colonnes d’un index, il faut interroger la table iiindex_columns. index_name est ici une valeur provenant de la colonne iiindex.index_name dans la requête de la table iiindexes :

SELECT * FROM iiindex_columns WHERE index_name = 'indexname'

Avec la requête suivante, on obtient tous les index d’une table donnée, y compris les colonnes/champs concernés :

SELECT * FROM iiindexes LEFT JOIN iiindex_columns ON iiindexes.index_name = iiindex_columns.index_name WHERE base_name = 'tablename' ORDER BY iiindexes.index_name, key_sequence

Si vous voulez savoir si un champ de table déjà existe dans un index, il est préférable d’utiliser la requête suivante :

SELECT * FROM iiindexes LEFT JOIN iiindex_columns ON iiindexes.index_name = iiindex_columns.index_name WHERE base_name = 'tablename' and column_name = 'columnname'

Informations complémentaires

À propos de l'auteur

Mentions de Cookies WordPress par Real Cookie Banner