2010-12-01 23 views
2

J'ai deux indices existants dans une base de données comme ci-dessousIndex non clusterisé avec include vs presque identique Index non clusterisé sans; Couverture multiple requête

  1. CREATE NONCLUSTERED INDEX IndexTable1 sur la table (fkAnothertable)

  2. CREATE NONCLUSTERED INDEX IndexTable2 sur la table (fkAnothertable) Include (pkTable)

J'avais une intuition et ma recherche semble indiquer que toutes les questions que appel # 1 serait satisfait par # 2 et que # 1 est un gaspillage. Je ne pouvais pas trouver une réponse définitive si.

Cette hypothèse est-elle correcte et puis-je supprimer la valeur 1 et potentiellement améliorer les performances?

Répondre

2

Oui. # 2 couvre entièrement # 1 et peut-être vice-versa en fait. Est-ce que pkTable votre clé d'index clusterisée? Si c'est le cas, cela sera inclus dans # 1 (au niveau de la clé car l'index non groupé n'est pas déclaré comme unique).

Si pkTable n'est pas la clé de cluster interroge ensuite sur la recherche #1 sera satisfait encore par #2 mais #2 peut occuper plus de pages rendant ainsi les analyses qui ont utilisé #1 un peu moins efficace.

+0

Je ne crois pas que nous ayons réellement des index clusterisés. Je pourrais toutefois avoir tord. Permettez-moi de vérifier et de vous revenir là-dessus. – Wulfhart

+0

@ user526999 - Le PK est sauvegardé par un index cluster, sauf indication contraire explicite. –

+0

Oui, il est, n'était tout simplement pas dans le fichier .sql que j'ai reçu. – Wulfhart