48 votes

Quel est le meilleur: recherche de signet / clé ou analyse d'index

Je sais qu’une recherche d’ index est préférable à une analyse d’ index, mais laquelle est préférable dans les plans d’exploitation de SQL Server: recherche d’index ou recherche de clé (marque-page dans SQL Server 2000)?

Dites-moi, s'il vous plaît, qu'ils n'ont plus changé le nom pour SQL Server 2008 ...

53voto

gbn Points 197263

Recherche d'Index, à chaque fois.

Les recherches sont chers, si ce n'est la couverture des index et surtout les INCLURE la clause a été ajoutée pour les rendre meilleures.

En disant que si vous vous attendez à ce qu'une seule ligne, par exemple, une recherche suivie d'une recherche peut être mieux que d'essayer de couvrir une requête. Nous comptons sur ce pour éviter encore un autre indice dans certaines situations.

Edit: Simple de parler de l'article: en Utilisant la couverture des Index pour Améliorer les Performances des Requêtes

Edit, Août 2012

Les recherches se produire par ligne qui est pourquoi ils l'échelle de mal. Finalement, l'optimiseur va choisir une analyse d'index cluster au lieu de chercher+recherche parce que c'est plus efficace que de nombreuses recherches.

10voto

Remus Rusanu Points 159382

Clé de recherche est très similaire à une recherche d'index cluster (avant 2005 SP2 a été nommé "chercher avec la recherche"). Je pense que la seule différence est que la Clé de Recherche peut indiquer l'un des PRE-FETCH argument de mandater le moteur d'exécution pour extraire plus de touches dans le cluster (ie. faire une recherche d'index cluster suivie par scan).

En voyant une Clé de Recherche ne doit pas vous effrayer. C'est la normale opérateur utilisé dans les Boucles Imbriquées, et les Boucles Imbriquées est run-of-the-mill opérateur de jointure. Si vous voulez améliorer un plan, essayez de l'améliorer sur la jointure et voir si elle peut utiliser une jointure de fusion à la place (c'est à dire. les deux côtés de la jointure peut fournir des lignes sur la même touche de commande, le plus rapide de rejoindre) ou un hash join (avoir suffisamment de mémoire pour la QO à envisager une jointure de hachage, ou de réduire la cardinalité par le filtrage des lignes avant de les rejoindre plutôt qu'après).

1voto

Dustin Venegas Points 418

Cette question SO mentionne que les recherches de clés sont quelque chose à éviter. Une recherche d'index va certainement être l'opération la plus performante.

Prograide.com

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.

Powered by:

X