1

Dans une base de données existante (SQL Server 2000), nous avons un index ordonné en clusters qui ressemble à ceci:Pourquoi auriez-vous un index composite en cluster quand aucun des champs n'est utilisé ensemble?

CREATE CLUSTERED INDEX [IX_usr] ON [dbo].[usr] 
(
    [uid] ASC, 
    [ssn] ASC, 
    [lname] ASC 
) 

La chose est, pour autant que je sache, aucun de ces champs sont utilisés ensemble dans une clause WHERE. Il n'y a pas non plus de raison d'utiliser l'un d'eux ensemble. Y a-t-il une raison d'avoir un index clusterisé comme celui-ci?

+0

Il aurait pu être suggéré par l'outil SQL Server Profiler, même si je ne suis pas sûr que cela fonctionne sur Sql Server 2000. – Shawn

Répondre

1

Une raison à laquelle je pourrais penser est que si vous n'utilisez que ces champs dans de nombreuses instructions select (pas nécessairement dans la clause where), cela pourrait servir d'indice de couverture.

Par exemple, si vous avez beaucoup de questions comme celle-ci:

SELECT uid, ssn, lname FROM usr WHER uid = x 

La requête ne l'aurait jamais fait de frapper la table que tous les champs obligatoires sont dans l'index.

+0

Maintenant que vous le mentionnez, cela semble effectivement être le cas. –

Questions connexes