it-swarm.com.de

Wie kann ich alle verfügbaren Indizes für eine Tabelle in DB2 finden?

Wie finde ich alle verfügbaren Indizes für die Tabelle in db2?

11
Rumik
db2 "select * from syscat.indexes where tabname   = 'your table name here' \
                                  and   tabschema = 'your schema name here'"
26
Ingo

Sie können auch ausführen:

DESCRIBE INDEXES FOR TABLE SCHEMA.TABLE SHOW DETAIL
14
Ian Bjorhovde

Sie können die Details der Indizes mit dem folgenden Befehl abrufen.

describe indexes for table schemaname.tablename show detail
1
Dhanish Jose

Dies hängt davon ab, welche DB2-Version Sie verwenden. Wir haben v7r1m0 und die folgende Abfrage funktioniert recht gut.

WITH IndexCTE (Schema, Table, Unique, Name, Type, Columns) AS
   (SELECT i.table_schema, i.Table_Name, i.Is_Unique, 
           s.Index_Name, s.Index_Type, s.column_names
    FROM qsys2.SysIndexes i
    INNER JOIN qsys2.SysTableIndexStat s
    ON i.table_schema = s.table_schema
    and i.table_name = s.table_name
    and i.index_name = s.index_name)
SELECT * 
FROM IndexCTE 
WHERE schema = 'LIBDEK' 
AND   table = 'ECOMROUT'

Wenn Sie mit CTE nicht vertraut sind, lohnt es sich, sie kennenzulernen. Unsere AS400-Namenskonventionen sind schrecklich, daher habe ich CTEs verwendet, um Feldnamen zu normalisieren. Am Ende habe ich eine CTE-Bibliothek erstellt, die automatisch an die Spitze aller meiner Abfragen angehängt wird. 

1
D. Kermott

Um alle Indizes zu sehen: - 

select * from user_objects
where object_type='INDEX'

So zeigen Sie den Index und seine Spalten in der Tabelle an:

select * from USER_IND_COLUMNS where TABLE_NAME='my_table'
1
Umang Pareek

Eine weitere Möglichkeit besteht darin, die DDL der Tabelle zu generieren. Sie erhalten eine vollständige Beschreibung der Tabelle einschließlich des Index.

Klicken Sie einfach mit der rechten Maustaste auf die Tabelle und dann auf DDL/Scripts generieren. 

Funktioniert für den größten Teil der Datenbank.

0
Vikas Jain

Um die Indizes einer Tabelle in IBM Db2 in der Cloud (vormals DashDb) zu überprüfen, sollte die folgende Abfrage dies tun:

SELECT * FROM SYSCAT.INDEXES WHERE TABNAME = 'my_tablename' AND TABSCHEMA = 'my_table_schema'

Sie können auch anhand des Indexnamens prüfen:

SELECT COUNT(*) FROM SYSCAT.INDEXES WHERE TABNAME = 'my_tablename' AND TABSCHEMA = 'my_table_schema' AND INDNAME='index_name'

Das gleiche Ergebnis kann mit SYSIBM.SYSINDEXES erzielt werden. Diese Tabelle wird jedoch nicht direkt auf der Produktdokumentationsseite referenziert.

SELECT COUNT(*) FROM SYSIBM.SYSINDEXES WHERE TBNAME = 'my_tablename' AND TBCREATOR = 'my_table_schema' AND NAME='my_index_name'

Siehe SYSCAT.INDEXES-Katalogsicht .

0
adtanasa