Dans la conception de la base de données, nous utilisons souvent guid ou int comme clé principale, et selon les connaissances que nous avons acquises, nous avons toujours estimé que int est plus efficace comme clé principale, mais cela est impossible sans tests rigoureux
Expliquez la raison. Il se trouve que lors de l’optimisation de la base aujourd’hui, j’ai rencontré ce problème, alors j’ai fait un test.
Environnement de test :
PC de bureau Pentiun(R) 4 CPU 3,06GHz Win XP professionnel 1,5G DE RAM DDR SQL Server 2005 Personal
Processus de test :
D’abord, créer une base de données de test, tester
Les résultats des tests sont les suivants :
Comme mentionné plus haut, l’efficacité d’utiliser int comme clé primaire est améliorée comparée à l’utilisation de guid comme clé principale, surtout lorsqu’il y a une requête de connexion et que des enregistrements sont supprimés.
De plus, dans la requête de données avec la clé principale dans GUID aujourd’hui, le délai d’attente de requête se produisait à plusieurs reprises en raison de l’imbrique de plusieurs sous-résultats de requête. Par conséquent, je suis en faveur d’utiliser int comme clé principale, et je ne suis pas d’accord avec guid comme clé principale. Les points de vue ci-dessus représentent des opinions personnelles, et chacun est invité à exprimer son avis et à expliquer les avantages et inconvénients de GHID et d’intelligence comme clé principale.
Tests de suivi :
Après leur rappel par les frères, un indice non regroupé a été ajouté aujourd’hui à deux sous-tables :
CRÉER Index_Detail_Guid D’INDEX NON REGROUPÉ SUR Test_Guid_Detail(Guid) CRÉER Index_Detail_id D’INDEX NON REGROUPÉ SUR Test_Int_Detail(id) Ensuite, j’ai mené une requête interne sur la connexion et j’ai constaté que, comme @Xu Shaoxia l’a dit, l’efficacité n’est effectivement pas assez évidente pour indiquer plus de 50 %, et en gros seulement environ 23 % d’amélioration, ce qui reste acceptable.
Par conséquent, il est recommandé
1. Dans les systèmes qui nécessitent souvent une migration de données, il est recommandé d’utiliser Guid. Et ajouter des index non regroupés aux champs de clés étrangères correspondants, c’est-à-dire les champs utilisés pour les requêtes de jointure, est très bénéfique pour améliorer les performances. Le champ de la condition où peut également être ajouté selon le cas pour les index non regroupés.
2. Lorsque vous utilisez le type Guid comme clé primaire, le type de données doit être uniqueidentifier, et veillez à ne pas oublier d’annuler « l’indice agrégé » de la clé primaire
3. Pour les systèmes qui n’ont pas besoin d’être migrés, ou les petits systèmes, il reste très pratique d’utiliser l’intelligence comme clé principale, et il y a encore une certaine amélioration de l’efficacité.
|