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 +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Partager