Je connais les principales différences entre les index en cluster et les non en cluster et je comprends leur fonctionnement. Je comprends comment les index en cluster et non en cluster améliorent les performances de lecture. Mais une chose que je ne suis pas sûre, c’est que c’est la raison pour laquelle je choisirais l’une plutôt que l’autre.
Par exemple: si une table n’a pas d’index cluster, faut-il créer un index non-cluster et quel est l’avantage de le faire
Je veux juste mettre un mot d’avertissement: veuillez très soigneusement choisir votre index clusterisé! Chaque table de données "normale" devrait avoir un index clusterisé, car avoir un index clusterisé accélère effectivement de nombreuses opérations - oui, accélère , même insère et supprime! Mais seulement si vous choisissez un bon index en cluster.
C'est la structure de données la plus répliquée de votre base de données SQL Server. La clé de clustering fera également partie de chaque index non clusterisé de votre table.
Vous devez faire très attention lorsque vous choisissez une clé de clustering - elle devrait être:
étroit (idéal sur 4 octets)
unique (c'est après tout le "pointeur de ligne". Si vous ne le rendez pas unique, SQL Server le fera pour vous en arrière-plan, ce qui vous coûtera cher. quelques octets pour chaque entrée multiplient le nombre de lignes et d'index non clusterisés que vous avez - cela peut être très coûteux!)
statique (ne jamais changer - si possible)
idéalement toujours croissant pour ne pas vous retrouver avec une fragmentation d'index horrible (un GUID est le contraire d'un bon clustering clé - pour cette raison particulière)
elle devrait être non nullable et idéalement aussi de largeur fixe - un varchar(250)
rend une clé de regroupement très mauvaise
Tout le reste devrait vraiment être deuxième et troisième niveau d'importance derrière ces points ....
Voir quelques-uns des articles de blog de Kimberly Tripp (, la reine de l'indexation ) sur le sujet - tout ce qu'elle a écrit dans son blog est absolument inestimable - lisez-le, digérez-le - vivez-en!