Afficher les index d’une table

Afficher les index d'une table

Voici une petite requête qui va nous permettre de lister les colonnes de tous les index d’une table bien précise de notre Base de Données.

Ce bout de code à garder à proximité, va nous permettre de savoir si on a un index sur telle ou telle colonne de notre table pour ainsi optimiser les temps de chargement.

SELECT Tab.name TABLE_NAME, 
          Idx.name INDEX_NAME, 
          Col.name COLUMN_NAME, 
          'PRIMARY_KEY' = case Idx.is_primary_key When '0' Then '0' Else '-1' End, 
          'UNIQUE'      = case Idx.is_unique      When '0' Then '0' Else '-1' End
FROM sys.tables                Tab
      Inner join sys.indexes  Idx    On Tab.object_id    = Idx.object_id 
      INNER JOIN sys.index_columns IdxCol ON IdxCol.object_id = Idx.object_id AND IdxCol.index_id  = Idx.index_id 
     IINNER JOIN sys.columns       Col    ON Col.object_id    = IdxCol.object_id And Col.column_id    = IdxCol.column_id 
WHERE Tab.type_desc = 'USER_TABLE' 
AND Tab.name = 'MA_TABLE_NAME'
ORDER BY TABLE_NAME, INDEX_NAME,COLUMN_NAME

Le résultat de cette requête :

  • Nom de la table
  • Nom de l’index
  • Nom de la colonne sur laquelle existe l’index
  • S’agit-il d’une clé primaire ?
  • index unique ou non ?

Vous avez remarqué qu’on a ajouté une condition avec le nom de la table, mais si on souhaite avoir tous les index de la base de données, il suffit d’enlever la condition :

AND Tab.name = 'MA_TABLE_NAME'

3 click solutions

3 Click Solutions est une agence web, mobile et de formation. Spécialisée dans le web design, création site web dynamique, site web e-commerce, community management et le référencement web mais aussi des applications mobiles Androïdes et de formation en SIG