Comment lister les index d'une table par requete ?
Merci
Comment lister les index d'une table par requete ?
Merci
tu cherches dans les tables sysindexes et sysindexkeys de ta base, en faisant une jointure avec sysobjects et syscolumns.
exemple basique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT I.NAME NOM_INDEX, T.NAME NOM_TABLE, C.NAME NOM_COLONNE FROM SYSOBJECTS T INNER JOIN SYSINDEXES I on T.ID = I.ID INNER JOIN SYSINDEXKEYS K ON I.ID = K.ID AND I.INDID = K.INDID INNER JOIN SYSCOLUMNS C ON K.ID = C.ID AND K.COLID = C.COLID WHERE I.STATUS<>0 AND T.TYPE = 'U' AND T.NAME = 'LA TABLE'
La requête précédente (avec MSS 2005) affiche seulement les index uniques (Primary KEY et Unique Index)
Il faut changer la condition finale pour avoir tous les index :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT I.NAME NOM_INDEX, T.NAME NOM_TABLE, C.NAME NOM_COLONNE FROM SYSOBJECTS T INNER JOIN SYSINDEXES I ON T.ID = I.ID INNER JOIN SYSINDEXKEYS K ON I.ID = K.ID AND I.INDID = K.INDID INNER JOIN SYSCOLUMNS C ON K.ID = C.ID AND K.COLID = C.COLID WHERE T.NAME = 'NOM_DE_TABLE'
Surtout il convient de ne plus utiliser ces tables, mais de passer par les vues adéquates que sont :
En effet les tables système peuvent donner des résultats faux et ne seront bientôt plus accessibles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT * FROM sys.indexes SELECT * FROM sys.index_columns
A +
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager