Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment décider quand utiliser l'index sur la colonne de la table

En général, ma stratégie d'indexation serait quelque chose comme ça (j'utilise SQL Server exclusivement pour l'instant - adaptez-vous à votre propre système de base de données si nécessaire) :

  • choisissez un bon clé de clustering - pas un GUID, pas un VARCHAR(250) ou quelque chose - un bon la clé de clustering est étroite, unique, stable, en constante augmentation - quelque chose comme un INT IDENTITY est parfait. En fait votre clé primaire en cluster -> vous donne votre premier index sur la table

  • pour toute colonne utilisée comme clé étrangère dans une autre table - ajoutez un index. Il peut s'agir d'un index à une seule colonne - ou d'un index composé - selon ce qui convient le mieux à votre cas. Il est important que la colonne de clé étrangère soit la première colonne dans cet index (si vous utilisez un index composé) - sinon, les avantages pour le JOIN ou pour vérifier l'intégrité référentielle ne seront pas disponibles sur votre système

Et c'est tout pour le moment.

Ensuite :exécutez votre système - observez et mesurez - établissez une ligne de base. L'application est-elle assez rapide ? Si oui -> vous avez terminé - rentrez chez vous et profitez de votre temps libre.

Si ce n'est pas le cas :commencez à collecter des données et des indications sur les raisons pour lesquelles l'application n'est pas assez rapide. Regardez par ex. des choses comme les DMV dans SQL Server qui vous informent des requêtes les moins performantes, ou le index DMV manquant . Analysez-les. Voyez ce que vous pourriez améliorer. Ajouter un index à la fois et encore :observez, mesurez, comparez à votre référence.

Si vous avez une amélioration -> laissez cet indice en place et cette mesure est votre nouvelle ligne de base. Rincez et répétez jusqu'à ce que vous (et vos utilisateurs) soyez satisfaits des performances de l'application (et ensuite rentrez chez vous et profitez de votre temps libre).

La surindexation dans SQL Server peut être pire que de ne pas avoir d'index. Ne commencez pas avec trop d'indices pour commencer ! N'établissez que le bon PK groupée et index non clusterisés à clé étrangère - c'est tout - puis observez, mesurez, optimisez et répétez ce cycle.



No