J’aimerais attirer votre attention sur un type de données que je déteste personnellement et qui s’appelle UNIQUEIDENTIFIER. C’est un type de données unique qu’on utilise parfois pour les clés primaires dans SQL Server. L’ UNIQUEIDENTIFIER est basé sur un algorithme qu’on appelle un UUID ou un GUID, pour Globally Unique Identifier.

Il est généré dans SQL Server avec la fonction Transact-SQL NEWID(). La valeur générée par la fonction NEWID() est totalement aléatoire, et l’algorithme garantit que statistiquement, il n’y a que des chances infinitésimales qu’on retrouve deux fois la même valeur.

Si on utilise un UNIQUEIDENTIFIER comme clé primaire, et qu’on conserve les valeurs par défaut, cela va créer un index clustered sur cette colonne. On va donc structurer la table dans l’ordre des valeurs de cette colonne. Cela veut dire que cette table doit rester dans l’ordre de cette colonne, mais on a vu que l’UNIQUEIDENTIFIER est une valeur aléatoire, donc ce ne sera pas dans l’ordre. On va donc fragmenter la table.

En conclusion, ne créez pas de clé primaire sur les UNIQUEIDENTIFIER dans SQL Server, faites-le sur des entiers qui vont augmenter de taille par auto-incrément, c’est-à-dire avec une propriété IDENTITY.

Actuces et tutoriels SQL Server en français, pour SQL Server 2017, SQL Server 2016, et toutes versions.
Par Rudi Bruchez
https://www.linkedin.com/in/rudibruchez/
www.pachadata.com

N’utilisez pas l’UNIQUEIDENTIFIER en clé primaire !
1
Je suis peut-être en ligne

Bonjour,
N'hésitez pas à me contacter pour vos demandes sur SQL Server ! Via un chat, ou par e-mail