Hier erfährst du wie man alle Indizes einer Ingres-Datenbank auflistet, oder alle Indizes einer bestimmten Tabelle, doer ob ein bestimmtes Feld in einem Index enthalten ist.
Die Indizes (“Indexe”) einer Actian Ingres-Datenbank kann man sich über ganz normale Select-Abfragen anzeigen lassen.
Um alle vorhandenen Indizes aller Tabellen anzuzeigen, fragt man einfach die Tabelle iiindexes
ab:
SELECT * FROM iiindexes
Oft möchte man jedoch nur die Indizes einer bestimmten Tabelle sehen. Dazu ergänzt man das SQL-Statement um eine passende Where-Bedingung. (Das Feld iiindexes.base_name enthält den Tabellennamen). tablename
ersetzt man einfach durch den gewünschten Tabellennamen:
SELECT * FROM iiindexes WHERE base_name = 'tablename'
Die vorangegangenen Abfragen listen nur die Namen der entsprechenden Indizes auf – nicht aber die Felder / Spalten die dem Index zugewiesen sind. Um alle Spalten eines Index anzuzeigen, fragt man die Tabelle iiindex_columns
ab. index_name
ist hierbei ein Wert aus der Spalte iiindex.index_name
aus der Abfrage der Tabelle iiindexes
:
SELECT * FROM iiindex_columns WHERE index_name = 'indexname'
Mit folgender Abfrage erhält man alle Indizes einer bestimmten Tabelle inklusive der entsprechenden Spalten / Felder:
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
Möchte man wissen, ob ein bestimmtes Tabellenfeld bereits in einem Index enthalten ist, nutzt man am besten diese Möglichkeit:
SELECT * FROM iiindexes LEFT JOIN iiindex_columns ON iiindexes.index_name = iiindex_columns.index_name WHERE base_name = 'tablename' and column_name = 'columnname'