Si vous utilisez SQL Server comme serveur de base de données, il est très important de comprendre et de savoir quels sont les index utilisés dans chacune des tables de votre SI.
Qu’est ce que les index ?
En SQL, les index sont une des solutions pour pouvoir accéder plus rapidement aux données.
Un index permet de rechercher plus rapidement les données en commençant la recherche sur la colonne de l’index. S’il trouve, SQL Server saura plus rapidement où se trouve les enregistrements concernés par notre requête.
Requête qui liste 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.
En effet, 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
INNER 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
- Le 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'
Aussi, vous pouvez avoir d’autres astuces SQL Server en vous rendant sur nos articles de la catégorie SQL Server.
Enfin, si vous souhaitez en savoir plus sur un sujet précis de SQL Server, merci de nous laisser un commentaire et on traitera du sujet dans nos prochains articles.