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 :

l'indexation la plus efficace


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Points : 464
    Points
    464
    Par défaut l'indexation la plus efficace
    J'ai une table ( +10 million de records) ou la recherche s'effectue principalement sur trois champs CH1,Ch2 et CH3.
    est ce que c'est mieux d'indexer sur chaque champs (trois index) ou bien un seul index sur les trois ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1:ALTER TABLE MaTable ADD INDEX (  CH1 ),ADD INDEX (  CH2 ),ADD INDEX (  CH3)
     
    ou bien
     
    2:ALTER TABLE MaTable ADD INDEX (CH1, CH2, CH3);

    _____________________
    Il n'y a pas de choses urgentes, il n'y a que des choses en retard

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    je crois que ça dépend si tes recherches se font sur un des champ ou sur les 3 champs en même temps

  3. #3
    Membre confirmé Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Points : 464
    Points
    464
    Par défaut
    merci
    j'ai dit:
    la recherche s'effectue principalement sur trois champs CH1,Ch2 et CH3
    peut etre j'ai mal expliqué, je veux dire sur les trois champs en meme temps .

    _____________________
    Il n'y a pas de choses urgentes, il n'y a que des choses en retard

  4. #4
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Si on considère la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM MaTable WHERE ch1=... AND ch2=... AND ch3=...
    - Avantages d'un index triple : gain de performances car MySQL va accéder directement aux lignes concernées.
    Avec trois index séparés il aurait d'abord considéré l'index le plus restrictif (celui aboutissant sur le moins de lignes) puis effectué des recoupements avec les lignes des 2 autres index à partir de là.

    - Inconvénients d'un index triple : seules les recherches sur des colonnes formant un préfixe gauche de l'index, à savoir ch1, (ch1, ch2) ou (ch1, ch2, ch3) utiliseront l'index.
    Il faut donc mettre un index individuel sur ch2 et ch3 si tu as des clauses WHERE qui n'utilisent que ces critères.
    Pensez au bouton

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

Discussions similaires

  1. Equivalent curseur mais plus efficace en performance
    Par oadin dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 21/02/2008, 17h19
  2. Réponses: 1
    Dernier message: 27/03/2007, 18h22
  3. Réponses: 3
    Dernier message: 23/09/2006, 21h24
  4. une solution loop plus efficace?
    Par monopole dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/09/2006, 14h40
  5. [MySQL] Incrémenter une sous-chaine le plus efficacement possible ?
    Par smrhp dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/06/2006, 15h58

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