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'