Dans un plan d'exécution SQL Server, quelle est la différence entre une analyse d'index et une recherche d'index
Je suis sur SQL Server 2005.
Dans un plan d'exécution SQL Server, quelle est la différence entre une analyse d'index et une recherche d'index
Je suis sur SQL Server 2005.
Une analyse d'index est où SQL server lit l'ensemble de l'indice à la recherche pour les matchs - le temps que cela prend est proportionnelle à la taille de l'index.
Un index de recherche est là que SQL server utilise le b-arbre de structure de l'indice de rechercher directement les enregistrements correspondants (voir http://mattfleming.com/node/192 pour avoir une idée sur la façon dont cela fonctionne) - temps de prise est seulement proportionnelle au nombre d'enregistrements correspondants.
La règle de base à suivre est les Scans sont mauvais, Cherche sont bonnes.
Analyse D'Index
Lorsque SQL Server effectue un scan, il charge l'objet dont on veut lire à partir du disque dans la mémoire, puis se lit à travers cet objet à partir du haut vers le bas à la recherche pour les dossiers dont il a besoin.
Recherche D'Index
Lorsque SQL Server effectue une recherche, il sait où dans l'index que les données vont être, de sorte qu'il des charges jusqu'à l'index à partir de la disquette, va directement à la partie de l'indice dont il a besoin et se lit à l'endroit où les données dont elle a besoin se termine. C'est obsouly un doit assurer un fonctionnement plus efficace qu'une analyse, que SQL sait déjà où les données, c'est qu'il est à la recherche pour.
Comment puis-je modifier un Plan d'Exécution à utiliser une recherche au lieu d'une Analyse?
Lorsque SQL Server est à la recherche de vos données probablement l'une des plus grandes choses qui feront de SQL Server switch à partir d'une recherche pour un scan, c'est quand certaines colonnes sont ce que vous cherchez ne sont pas inclus dans l'index que vous souhaitez utiliser. Le plus souvent cela aura SQL Server revenir à faire une analyse d'index cluster, depuis l'index Cluster contient toutes les colonnes dans la table. C'est l'une des principales raisons (à mon avis du moins) que nous avons maintenant la possibilité d'INCLURE des colonnes dans un index, sans ajout de ces colonnes pour les colonnes indexées de l'index. En incluant les colonnes supplémentaires dans l'index, nous avons augmentation de la taille de l'index, mais nous permettre de SQL Server pour lire l'index, sans avoir togo retour à l'index cluster, ou à la table elle-même pour obtenir ces valeurs.
Références
Pour plus d'informations concernant les spécificités de chacun de ces opérateurs au sein d'un Serveur SQL plan d'Exécution de voir....
Avec une analyse d'index, toutes les lignes de l'index sont analysées pour rechercher une ligne correspondante. Cela peut être efficace pour les petites tables. Avec une recherche d'index, il suffit de toucher les lignes qui répondent réellement aux critères, ce qui la rend généralement plus performante.
Une analyse d'index se produit lorsque la définition d'index ne peut pas trouver sur une seule ligne pour satisfaire les prédicats de recherche. Dans ce cas, SQL Server doit numériser plusieurs pages pour trouver une plage de lignes correspondant aux prédicats de recherche.
Dans le cas d'une recherche d'index, SQL Server recherche une seule ligne correspondant aux prédicats de recherche à l'aide de la définition d' index .
Les recherches d'index sont meilleures et plus efficaces.
Une analyse touche chaque ligne de la table, même si c'est ce que vous recherchez ou non.
Une analyse ne regarde que les lignes qui correspondent à ce que vous recherchez.
Il est toujours préférable d'avoir des recherches plutôt que des analyses car elles sont plus efficaces dans l'apparence des données.
Une bonne explication peut être trouvée ici
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.