Question

J'ai une base de données SQL Server 2005 avec des champs vierges qui utilise des GUID standard non triés comme la plupart des valeurs de clés primaires et également dans les index en cluster (ce qui nuit aux performances).

Comment devrais-je changer ces identificateurs en GUID séquentiels? L'un des défis serait de remplacer toutes les valeurs de clé étrangère au fur et à mesure que je change de clé primaire.

Connaissez-vous des outils ou des scripts pour effectuer ce type de conversion?

Était-ce utile?

La solution

rappelez-vous que vous ne pouvez utiliser que la fonction newsequentialid () par défaut

donc créez une nouvelle table avec 2 colonnes. Insérez la clé de votre table originale dans celle-ci (laissez l’autre colonne remplacée, elle se remplira d'elle-même)

rejoindre la table d'origine et mettre à jour la PK avec le newsequantialidid, si vous avez une mise à jour en cascade, les FK doivent se mettre à jour par eux-mêmes

Autres conseils

Comment savez-vous que c'est mauvais pour la performance?

L'avantage des GUID est que vous n'avez pas à vous soucier de plusieurs processus créant des enregistrements en même temps. Cela peut considérablement simplifier votre code, selon le programme.

Les SequentialGuids sont les meilleurs pour la performance lorsque Guid est la PK. C’est la raison de leur existence.

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