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

Oracle Discussion :

[Clé unique/Clé composite] Gain de performances ?


Sujet :

Oracle

  1. #1
    Membre actif Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Points : 208
    Points
    208
    Par défaut [Clé unique/Clé composite] Gain de performances ?
    bonjour,

    je me pose une question.
    Actuellement nous avons plusieurs tables avec comme clé primaire un ensemble de 3, voir 4 champs.
    ces tables sont liées entre elles par l'intermédiaire de ces 4 champs, donc quand un veux faire une requete ça donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select * from table1,table2,table3
    where table1.champs1=table2.champs1 and ....table 1.champs4=table2.champs4
    and table3.champs1=table1.champs1..........
    c'est assez lourd je trouve comme code
    il serait donc judicieux de créer une clé unique, par contre est ce qu'il y aurait un gain non négligeable au niveau des performances, c'est la question que je me pose ?

    merci de vos réponses

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 138
    Points : 166
    Points
    166
    Par défaut
    Si la performance des programmeurs est un critère, oui!

    Sinon, le fait d'ajouter une séquence va simplifier le code certe, mais n'accélèrera pas de façon drastique l'exécution des requêtes, surtout si l'accès à ces tables se fait en interactif.

    Par contre, il faut se poser la question si ces valeurs seront spécifiées quand même dans la requête. Dans l'éventualité où on rajoute une clé primaire issue d'une séquence, donc non significative pour une domaine d'affaire, il est très probable que la clé actuelle de la table soit quand même spécifiée dans les requêtes, car elle sera le filtre qui sera appliqué anyway pour sélectionner les données "utiles", ce que la séquence sera impapable de faire.

    Le principal gain niveau traitement que vous allez gagner sera au niveau des jointures et de l'espace physique occupé par l'index de la clé primaire. Par contre, si votre clé primaire actuelle est composée de 4 champs, il est très probable que suite à son retrait, vous optiez pour l'ajout d'une clé unique pour ces 4 mêmes champs, et l'espace libéré par la supression l'ancien index sera réutilisé pour la création de la clé unique.

  3. #3
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    un paramétre important : un index d'une seule colonne prend moi de place

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/08/2012, 10h59
  2. [TBB] Gain de performances ?
    Par myzu69 dans le forum Threads & Processus
    Réponses: 5
    Dernier message: 28/12/2009, 12h27
  3. Réponses: 1
    Dernier message: 14/10/2009, 12h26
  4. Table access vers Oracle = Gain de performance ?
    Par niavlys77 dans le forum Access
    Réponses: 1
    Dernier message: 17/09/2007, 19h48
  5. [Packages]Un véritable gain de performance ?
    Par New dans le forum Oracle
    Réponses: 7
    Dernier message: 28/10/2005, 14h19

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