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

SQL Server 2005 a mis en cache un plan d'exécution qui ne pourrait jamais fonctionner

Vous pourriez être intéressé par le Première règle de programmation .

Un index clusterisé inclut toujours toutes les lignes. Il peut être classé par z , mais il contiendra toujours toutes les autres colonnes au niveau feuille.

La raison pour laquelle SQL Server préfère parfois une analyse en cluster à une recherche d'index est la suivante. Lorsque vous effectuez une recherche d'index, vous devez la suivre d'une recherche de signet vers l'index clusterisé pour récupérer les colonnes qui ne sont pas dans l'index.

Lorsque vous effectuez une analyse d'index clusterisé, vous recherchez par définition toutes les colonnes. Cela signifie qu'aucune recherche de signet n'est requise.

Lorsque SQL Server attend de nombreuses lignes, il essaie d'éviter les recherches de signet. C'est un choix qui a fait ses preuves. Les recherches d'index non cluster sont régulièrement battues par les analyses d'index cluster.

Vous pouvez tester cela pour votre cas en forçant soit avec le with (index(IX_YourIndex)) indice de requête .