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

Requêtes MySQL Discussion :

index et clef primaire et étrangère


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 74
    Par défaut index et clef primaire et étrangère
    Bonjour,
    Imaginons une bd de deux tables, T1 et T2.
    T2 contient deux champs :
    T2 {#chp1, chp2}.
    Ces deux champs forment la clef primaire de cette table. Par ailleurs, chp1 est clef étrangère, il référence un champ dans T1.
    Si j'ai bien compris, des indexs sont crées automatiquement pour les clefs primaire et étrangère. Dans notre cas, on devrait donc avoir deux index:
    • index(chps1, chps2) pour la clef primaire
    • index(chps1) pour la clef étrangère


    Ma question est :
    Sachant que mes requêtes utilisent souvent une clause where avec chp2 mais sans chp1, est il utile de créer un index du type :
    index(chps2)

    Merci de vos collaborations.
    Stos

  2. #2
    Membre éclairé Avatar de jp_rennes
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2006
    Messages : 72
    Par défaut
    L'ordre des attributs dans la clé est essentiel pour déterminer le type de recherche qui peut être accéléré par l'index.
    L'index est construit sur la concaténation des valeurs dans l'ordre indiqué.
    Si par exemple la clé est (nom,prenom), l'index accélère une recherche sur un paire de valeurs (nom et prénom), une recherche sur la valeur d'un nom.... mais pas sur la valeur d'un prénom.
    Dans ton cas on crée un index sur (champ1,champ2) pour la clé étrangère nul besoin car l'index de la clé primaire peu accélérer les recherches sur champ1
    Malheureusement, cet index n'accélère en rien les requêtes sur champ2
    Il te faut donc créer un index pour champ2

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 74
    Par défaut
    Citation Envoyé par jp_rennes
    Dans ton cas on crée un index sur (champ1,champ2) pour la clé étrangère nul besoin car l'index de la clé primaire peu accélérer les recherches sur champ1
    Il me semble sue les indexs pour les clefs sont construits automatiquement.
    Es tu sur que MySQL raisonne de cette façon et optimise le nombre d'index à créer?

    De toute façon, j'ai ma réponse en ce qui concerne chp2. Merci de ton aide.
    Stos

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

Discussions similaires

  1. index de clef primaire nonclustered
    Par Kropernic dans le forum PowerAMC
    Réponses: 1
    Dernier message: 17/09/2012, 13h03
  2. Réponses: 4
    Dernier message: 12/07/2012, 15h39
  3. [AC-2007] Index et Clef Primaire
    Par triaguae dans le forum Modélisation
    Réponses: 2
    Dernier message: 06/08/2010, 14h26
  4. Clef primaire access, Indexé avec doublon
    Par Asurmena dans le forum Access
    Réponses: 1
    Dernier message: 05/06/2006, 12h04
  5. Difference entre Clef primaire et Index
    Par vijeo dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 16/05/2006, 17h07

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