Principes de base d'indexation SQL Server
Je l'ai vu vos conseils sur l'indexation et je pense qu'ils sont grands. Je suis relativement nouveau à SQL Server et ont besoin de comprendre les bases. J'ai besoin des informations générales supplémentaires pour comprendre quelles sortes d'options d'indexation sont disponibles. Espérons que cela peut me conduire en utilisant quelques-uns des conseils supplémentaires. Pouvez-vous m'aider?
Lorsque vous commencez à concevoir et développer des bases de données, assurez-vous d'inclure l'indexation dans cet effort. Une stratégie bien pensée d'indexation peut améliorer considérablement la couche d'accès aux données et l'expérience globale de l'utilisateur. Cependant, prendre soin des index de base de données ne sont pas un événement ponctuel. À mesure que votre application change ainsi que lorsque les utilisateurs commencent à utiliser l'application de façons nouvelles et différentes, vos index doivent tenir compte de ces changements. De plus, comme tout le reste, les indices doivent être maintenus. Assurez-vous donc d'avoir vos index inclus dans le processus d'entretien régulier.
Avec tout cela étant dit, nous allons commencer à couvrir une partie des informations d'indexation de base. Dans cette astuce, nous allons essayer de simplifier un certain nombre de sujets complexes et interdépendants. À ce titre, l'objectif de ce conseil est d'introduire les thèmes et fournir des références supplémentaires pour une information élargie. Si vous recherchez des informations plus intermédiaire et avancé, consultez la catégorie d'indexation. De plus, consultez ces ressources si vous êtes à la recherche en recherche plein texte ou index XML par opposition aux index des moteurs relationnels traditionnels. Cela étant dit, nous allons sauter dedans!
Index clusterisés
Stocke les index clusterisés les données de la table sur la base des colonnes définies dans la déclaration de création d'index. En tant que tel, un seul index ordonné en clusters peut être défini pour la table parce que les données ne peuvent être stockées et triées d'une façon par table. En raison des impacts de stockage et de tri, assurez-vous de déterminer soigneusement la meilleure colonne pour cet indice.
Bien que de nombreuses implémentations ont seulement une seule colonne pour l'index cluster, en réalité, un index cluster peut avoir plusieurs colonnes. Faites juste attention de sélectionner les colonnes appropriées en fonction de la façon dont les données sont utilisées. Le nombre de colonnes dans l'index cluster (ou non cluster) peut avoir des conséquences sur les performances importantes avec de lourdes INSERT, UPDATE et DELETE activité dans votre base de données.
Une vieille question est de savoir si oui ou non une table doit avoir un index ordonné en clusters. La réponse est non, mais dans la plupart des cas, il est une bonne idée d'avoir un index ordonné en clusters sur la table pour stocker les données dans un ordre spécifique. Si une table ne dispose que des index non-cluster, il est appelé un tas. Pour plus d'informations consultez les tableaux en cluster vs tables heap.
Index non cluster
Un index non cluster peut consister en une ou plusieurs colonnes, mais le stockage des données ne dépend pas de cette instruction create index comme cela est le cas avec l'index cluster. Pour une table sans un index cluster, qui est appelé un segment de mémoire, les points d'index non cluster la rangée (données). Dans le cas où la table a un index ordonné en clusters, puis les points d'index non cluster à l'index cluster pour la ligne (données).
Facteur de remplissage
Lorsque vous créez un index l'option de facteur de remplissage indique à quel niveau les pages de feuilles sont lorsque l'indice est créé ou reconstruit. Les valeurs valides sont 0 à 100. Ces valeurs représentent utilisé un pourcentage des pages de niveau feuille lorsque l'index est créé ou reconstruit. Un facteur de remplissage de 0 signifie que toutes les pages de niveau feuille sont pleins. La même chose est vraie avec un facteur de remplissage égal à 100.
Voici quelques aspects à prendre en considération lorsque vous sélectionnez votre facteur de remplissage:
Pour plus d'informations sur des considérations de facteur de remplissage, consultez:
couvrant Index
Ordre de l'index
L'ordre d'index peut être soit en ordre ascendant ou descendant. Selon la façon dont vos requêtes renvoient les données dicte comment doit créer l'index. Avoir l'ordre d'index correct peut améliorer les performances des requêtes dans de nombreuses circonstances en particulier lorsque vous avez un indice de couverture. Consultez huit exemples dans le serveur SQL Building Index dans l'ordre croissant vs pointe Ordre décroissant pour les mesures de performance détaillées.
Entretien
Les indices, comme à peu près tout le reste dans le monde, ont besoin d'entretien. Les indices ont besoin d'entretien, car ils sont fragmentés. F ragmentation est causée par INSERT, UPDATE et DELETE activité sur une pages de fractionnement de table afin que l'ordre logique et physique des pages ne correspondent pas. Pour résoudre ce problème, les index fragmentés doivent être reconstruits sur une base régulière.
À MSSQLTips, nous nous soucions beaucoup de choses sur la fragmentation, afin de vérifier ces conseils:
Options additionelles
Bien que nous ayons seulement gratté la surface avec des indices, nous voulons aussi vous assurer que vous êtes au courant des sujets liés à l'indexation suivants:
Prochaines étapes
Bon conseil. M'a aidé à comprendre les indices beaucoup. Je n'ai une question, quand vous dites « mais dans la plupart des cas, il est une bonne idée d'avoir un index ordonné en clusters sur la table pour stocker les données dans un ordre spécifique », tout ce que je lu pour au sujet spécifique dans SQL Server dire que nous ne pas considérer toute particulière Oner. Pouvez-vous expliquer un peu plus? Merci d'avance!
Merci pour l'entrée. Voici une astuce qui permet de déterminer un meilleur indice cluster basé sur les données des DMVs.
J'aurais aimé avoir vu des références à des articles disant que la colonne (s) doit être dans l'index cluster - par exemple, la colonne (s) fréquemment utilisé dans une recherche de plage ou dans une clause ORDER BY. De même, des références pour des articles disant que la colonne (s) pour faire un index non cluster pour auraient dû être donné.
La phrase « Couvrant les indices se composent généralement de 2 ou plusieurs colonnes et ont tous les indices nécessaires pour répondre à une requête. » devrait vraiment dire « Couvrir les index contiennent toutes les colonnes nécessaires pour répondre à une requête. » Vous devriez avoir aussi distinguised entre la colonne de clé (s), utilisée dans le prédicat WHERE, et les colonnes de la clause SELECT, * inclus * dans le niveau des feuilles.
