Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/05/2006, 16h21   #1
Membre chevronné
 
Avatar de pinocchio
 
Homme François
Développeur informatique
Inscription : novembre 2002
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 35
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : novembre 2002
Messages : 773
Points : 787
Points : 787
Par défaut type de clé primaire

Bonjour,
J'ai eu jusqu'à ce jour à travailler avec des bases sur lesquelles je mettais en clé primaire des integer. Actuellement, je commence un nouveau travail sur une base avec l'ensemble de ses clés primaires avec des char(36) (sql serveur 2000). Pourriez-vous m'indiquer si un tel type de clé peut impacter au niveau des performances?
Cordialement
Pinocchio
pinocchio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2006, 16h25   #2
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
Etant donné que les clés sont de tailles fixes (elles le sont toujours de toutes façons), cela ne devrait pas impacter énormément... cependant, selon la méthode utilisée (sensible ou non à la casse, différences accents/pas accents, etc...), il est plus lourd de comparer des chaînes de caractères que des entiers donc l'impacte se fera ressentire ici lors de l'insertion (vérification de l'unicité) ou de la recherche
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2006, 18h12   #3
Membre chevronné
 
Avatar de pinocchio
 
Homme François
Développeur informatique
Inscription : novembre 2002
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 35
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : novembre 2002
Messages : 773
Points : 787
Points : 787
Merci, je pensais que ca impacterais plus que ça.

Je laisse en cours dans l'attente d'autres avis.
pinocchio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 10h12   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Ces clef seront au minimum entre 8 et 30 fois moins rapide que des integers...

En effet un integer c'est 32 bits. Un char 36 c'est 256 bits. Un processeur ne sait travailler que par mots de 32 bits. Autrement dit il devra faire 8 passes (8 * 32 = 256) pour lire la clef. Pour la mise en relation il faudra donc doubler ce chiffre. De plus les littéraux possèdent une collation qui fait qu'ils ne sont pas directement l'expression binaire sous jacente. Par exemple avec la collation par défaut d'installationd e MSQ SQL Server les mots "DuPoNt" et "DUPONT" sont vu de manière identique. Pour cela, bien que les code caractères soient différents, il faut une table de translation pour éffectuer la comparaison. Donc un coût supplementaire qui double en général le coût de lecture.

De plus, les structures d'index sous jacents à ce type de clef vont vite devenir très fragmentées à cause du fait que la valeur de la clef n'est pas monotone ni continue comme dans le cadre d'un auto incrément.

Si vous voulez quelques démo spectaculaires sur le sujet, je vous invite à assiter à l'un de mes cours sur l'optimisation des données sous MS SQL Server à Orsys (cours SQO).

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2006, 13h34   #5
Membre chevronné
 
Avatar de pinocchio
 
Homme François
Développeur informatique
Inscription : novembre 2002
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 35
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : novembre 2002
Messages : 773
Points : 787
Points : 787
Merci pour ces informations
pinocchio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h20.


 
 
 
 
Partenaires

Hébergement Web