IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Décisions SGBD Discussion :

type de clé primaire


Sujet :

Décisions SGBD

  1. #1
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    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

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    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, Cours PHP, Cours JavaScript, 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 :resolu: (en bas)

  3. #3
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Par défaut
    Merci, je pensais que ca impacterais plus que ça.

    Je laisse en cours dans l'attente d'autres avis.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 036
    Billets dans le blog
    6
    Par défaut
    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
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Par défaut
    Merci pour ces informations

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Le type de clé primaire a-t-il un impact sur la performance
    Par superloupiot dans le forum Modélisation
    Réponses: 2
    Dernier message: 07/04/2013, 15h53
  2. type de clé primaire pour une table pseudo temporaire
    Par gtraxx dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/03/2011, 11h08
  3. type de clé primaire
    Par tare9 dans le forum MySQL
    Réponses: 7
    Dernier message: 17/05/2010, 10h18
  4. Choix du type de clé primaire
    Par jmerigea dans le forum SQL
    Réponses: 5
    Dernier message: 30/07/2008, 19h36
  5. Modification du type du clé primaire
    Par GMI dans le forum InterBase
    Réponses: 3
    Dernier message: 07/01/2005, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo