Création d’index

SQL buton

L’amélioration des temps de réponse de requêtes sql passe par l’implémentation d'index efficaces. Cet article vous propose deux méthodes pour  créer des index dans votre base de données.

  I. Utilisation de SQL Server :  

  1. Exécutez votre procédure stockée
  2. Puis cliquez sur “Include actual execution plan” ou CRTL+M , le plan exécution vous permet de voir votre requête divisée en portion de code avec des détails comme les index qu’il faut créer sur votre base de données pour optimiser le temps d’exécution voir ci-dessous.

plan_execution

II. Une  autre façon de créer des index manquant [1]

Une  autre façon de créer des index manquants qui devraient générer l'amélioration la plus importante pour les requêtes des utilisateurs est d'exécuter la requête ci-dessous :

  1. Les  requêtes ci-dessous fournissent le nom de la base de données, du schéma et de la table où un index est manquant. Elle fournit également le nom des colonnes devant être utilisées pour la clé d'index  

SELECT TOP 10 *

FROM sys.dm_db_missing_index_group_stats

ORDER BY avg_total_user_cost * avg_user_impact * (user_seeks + user_scans)DESC;

2.  La requête ci-dessous  rend les 10  meilleurs index à ajouter pour améliorer les performances

SELECT migs.group_handle, mid.*

FROM sys.dm_db_missing_index_group_stats AS migs

INNER JOIN sys.dm_db_missing_index_groups AS mig

    ON (migs.group_handle = mig.index_group_handle)

INNER JOIN sys.dm_db_missing_index_details AS mid

    ON (mig.index_handle = mid.index_handle)

WHERE migs.group_handle in(Identifiant que la requête précédente a généré)

III. Exemple d’index [1]

Lors de l'écriture de l'instruction CREATE INDEX pour implémenter les index manquants, indiquez tout d'abord les colonnes d'égalité, puis les colonnes d'inégalité dans la clause ON <table_name> de l'instruction CREATE INDEX. Les colonnes incluses doivent être indiquées dans la clause INCLUDE de l'instruction CREATE INDEX. Pour déterminer un ordre efficace pour les colonnes d'égalité, organisez ces colonnes en fonction de leur sélectivité, en répertoriant d'abord les colonnes les plus sélectives (les colonnes de gauche dans la liste des colonnes).

CREATE NONCLUSTERED INDEX IX_NOM_BDD_TABLE_CHAMP

     ON Osiris.dbo.TABLE (Champ)

     INCLUDE (optionnel suivant ce que vous propose la requête précédente);

référence: 

[1] : https://technet.microsoft.com/fr-fr/library/ms345421(v=sql.105).aspx

 

Enregistrer

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.