Aide au diagnostic d’indexation d’une base MS SQL Server

L’ajout systématique de tous les index diagnostiqué par SQL Server via les DMV sys.dm_db_missing_index_details (et autres…), n’est pas une bonne idée. En effet on trouve souvent dans ces diagnostics, des index redondants ou inclus. Il faut donc étudier la pose de chaque index nouveau en fonction de toutes les demandes similaires, mais aussi en fonction des index similaires déjà en place.

Le batch fourni ci dessous propose une aide pour établir un tel diagnostic, par trois moyens :

  • le nombre de colonne incluse de l’index diagnostiqué (colonne NB_INC) ainsi que le nombre de colonnes de la table (NB_COL), est ajouté au diagnostic, permettant d’éviter de créer des index ayant une clause INCLUDE trop lourde;
  • les demandes sont triées par table puis clef d’index, permettant de visuellement se rendre compte si des index futurs pourraient être inclus dans d’autres index futurs;
  • les index similaires déjà présents sont rendu visible via les colonnes KEY_INDEX_SIMILAR, INCLUDED_COLS_SIMILAR, et aussi INDEX_NAME_SIMILAR, INDEX_ID_SIMILAR.

La colonne N fournit un indice différent pour chaque demande d’index nouveau. Le résultat peut faire apparaître plusieurs similarités.

La colonne SQL_CREATE_INDEX fournit une commande SQL DDL pour créer l’index manquant. Le nom de l’index incluant en suffixe la date de création sous la forme AAAAMMJJ.

Les valeurs des paramètres @FILL_FACTOR (facteur de remplissage des pages d’index) et @FILE_GROUP (espace de stockage pour les index) peuvent être modifiées au gré des besoins et des spécifications.

 Les figures suivantes nous montrent une partie des résultats qui permettent d’aider au diagnostic de pose de ces nouveaux index :

Il suffit d’analyser les colonnes CANDIDATE_KEY_COLUMNS et KEY_INDEX_SIMILAR (ainsi qu’éventuellement les colonnes incluses de part et d’autre) pour décider si l’on ajoute ou pas le nouvel index, ou bien si l’on modifie l’actuel index pour correspondre au besoin du nouveau.

Le code de la requête


Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
* Le site sur les SGBD relationnels et le SQL : https://sqlpro.developpez.com *
* le blog SQL, SQL Server, SGBDR... sur : https://blog.developpez.com/sqlpro/ *
* Expert Microsoft SQL Server, MVP (Most valuable Professional) depuis 14 ans *
* Entreprise SQL SPOT : modélisation, conseil, audit, optimisation, formation *
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

 

 

Ce contenu a été publié dans Procédures MS SQL Server, Requêtes de métadonnées, Requetes MS SQL Server, scripts SQL, SQL Server, Uncategorized. Vous pouvez le mettre en favoris avec ce permalien.