Question

Si votre colonne ID sur une table est un identifiant unique (Guid), est-il point de créer un cluster clé primaire sur la colonne ID?

Étant donné qu'ils sont uniques au monde, comment le travail de tri?

Était-ce utile?

La solution

GUIDs car ils sont sont terribles pour la performance car ils sont effectivement des valeurs aléatoires (ce « breaks » d'index cluster), et ils sont terribles pour les index, puisque moins d'entrées correspondent sur une page / étendue unique (termes SQL Server). SQL Server 2005 introduit newsequentialid() qui aide à résoudre premier problème .

Autres conseils

Je conseille fortement l'utilisation de clé clusterisé Guid ... Nous avons eu de grands problèmes de performance sur le serveur SQL en raison de cette mauvaise conception il y a quelques années.

Consultez également: Améliorer la performance de l'indice de cluster GUID clé primaire

Mettre un index ordonné en clusters sur une colonne de guid n'est pas une bonne idée (à moins que vous faire usage de GUIDs séquentiel).

L'index cluster détermine l'ordre physique de la façon dont les enregistrements sont stockés.
Cela signifie que, si vous mettez un index ordonné en clusters sur une colonne qui n'a pas séquentiellement croître, SQL Server aura un travail en veillant à ce que les dossiers sont correctement ordonnés physiquement lorsque vous insérez de nouveaux enregistrements.

L'idée d'avoir un indice est très bien triée en soi que la recherche devient alors très efficace.

Le problème est cependant que dans le cas d'un GUID recherche jamais avec « Où GUID = xyz ». Ainsi, le concept est gaspillé. Je suggère donc à plutôt un index cluster sur une colonne qui est utilisée le plus souvent comme argument de recherche pour augmenter l'efficacité de la requête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top