web-dev-qa-db-fra.com

Comment trouver tous les index disponibles sur une table dans DB2

Comment trouver tous les index disponibles sur table dans db2?

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

Vous pouvez également exécuter:

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

Vous pouvez obtenir les détails des index avec la commande ci-dessous.

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

Cela dépend de la version de DB2 que vous utilisez. Nous avons la v7r1m0 et la requête suivante fonctionne assez bien.

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'

Si vous n'êtes pas familier avec les CTE, ils méritent d'être connus. Nos conventions de nommage AS400 sont affreuses, donc je me sers des CTE pour normaliser les noms de champs. J'ai fini par créer une bibliothèque de CTE et l'ai ajoutée automatiquement en haut de toutes mes requêtes. 

1
D. Kermott

Pour voir tous les index: - 

select * from user_objects
where object_type='INDEX'

Pour voir l'index et ses colonnes sur la table:

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

Une autre méthode consiste à générer le DDL de la table. Il vous donnera la description complète de la table, y compris l’index.

Juste un clic droit sur la table et cliquez sur générer DDL/Scripts. 

Fonctionne sur la plupart de la base de données.

0
Vikas Jain

Pour vérifier les index d'une table sur IBM Db2 on Cloud (auparavant DashDb), la requête suivante doit le faire:

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

Vous pouvez aussi utiliser check by name:

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

Le même résultat peut être obtenu en utilisant SYSIBM.SYSINDEXES. Cependant, cette table n'est pas référencée directement sur la page de documentation du produit.

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

Voir Vue catalogue SYSCAT.INDEXES .

0
adtanasa