Index clusterisé / non clusterisé sur une colonne d'identificateur unique dans SQL Server

StackOverflow https://stackoverflow.com/questions/821108

Question

J'ai lu les différentes questions / réponses ici qui indiquent essentiellement que le fait de disposer d'un index clusterisé sur une colonne identifiant unique est un mauvais choix pour des raisons de performances. Quoi qu'il en soit, je dois utiliser un identifiant unique comme clé primaire et je ne veux PAS utiliser newsequentialid () car les valeurs générées sont trop similaires (j'ai besoin de plus d'identifiants aléatoires afin que les utilisateurs ne puissent pas [raisonnablement] "deviner" autre identifiant).

Alors, quel est le meilleur moyen d’indexer cette PK? Même si un index en cluster sur cette colonne n’est pas idéal, est-il meilleur qu’un indice "unique, non en cluster"? index?

J'utilise SQL Server 2005.

Était-ce utile?

La solution

Tout d'abord, si vous essayez d'utiliser NEWID () pour obtenir un caractère aléatoire (plus qu'une simple recherche aléatoire), vous avez des problèmes.

Il s'agit généralement d'un choix moins qu'idéal, car d'autres index référenceront la clé d'index clusterisée et une clé d'index clusterisée longue dégradera les performances de tous les index. Vous pouvez créer une colonne d’entiers IDENTITY et en faire l’index clusterisé et créer un index unique non clusterisé sur la colonne uniqueidentifier .

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