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 :

n INDEXs sur chaque champ ou 1 seul INDEX sur n ch


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut n INDEXs sur chaque champ ou 1 seul INDEX sur n ch
    Est-ce que qqn pourrait m'expliquer la différence entre un INDEX sur plusieurs champs et plusieurs INDEXs chacun sur un seul champ. Plus précisément, la différence en terme de fonctionnalités entre un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE matable ADD INDEX nomindex (col_A, col_B)
    et un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE matable ADD INDEX nomindexA (col_A)
    ALTER TABLE matable ADD INDEX nomindexB (col_B)
    En particulier, je me demande quelles sont les implications sur une requête du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from matable WHERE col_A like 'blablabla%' or col_B like 'blablabla%'
    (performances del requête, nombre de résultats, taille des fichiers d'index, etc.)

    En fait, j'ignore si cette question est propre à MySQL ou s'il s'agit d'une question plus générale aux SGDBs et à SQL. Merci de me diriger vers le bon forum si je me suis trompé.

  2. #2
    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
    Un index sur deux colonnes, du style nomindex (col_A, col_B), lira directement les lignes voulues lors d'une requête SELECT ... WHERE col_A=xxx AND col_A=yyy.

    S'il y a deux index séparés sur col_A et col_B, mySQL en prend un des deux (le plus restrictif) et recherche les lignes correspondant à cet index et qui sont aussi pointées par l'autre index.

    Donc en prenant la première solution, le gain de performance est assez net lorsqu'il y a beaucoup de requêtes avec une clause WHERE portant sur l'un ET l'autre des deux champs.

    En revanche avec la requête que tu cites (l'un OU l'autre), un index sur les deux colonnes est inutile.
    Il permettra de retrouver directement l'intersection de l'ensemble où col_A=xxx et de celui où col_A=yyy, mais pas l'union. Pour ça, il faut bien deux index distincts...
    Pensez au bouton

  3. #3
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    Merci bcp Maximilian, c bcp plus clair maintenant. En fait, un de mes amis m'a indiqué la bonne section du manuel qui m'a été bien utile (pour quelque raison je ne l'avais pas trouvé moi-même alors que j'avais cherché )
    Peut-être que ca pourra aider qqn :

    http://dev.mysql.com/doc/mysql/en/MySQL_indexes.html
    titre : "7.4.5 How MySQL Uses Indexes"

    Ca y est même en français pour ceux qui n'aiment pas la VO
    http://dev.mysql.com/doc/mysql/fr/MySQL_indexes.html
    titre : "5.4.3 Comment MySQL utilise les index"

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/02/2015, 08h32
  2. Réponses: 2
    Dernier message: 19/11/2014, 13h23
  3. [1.x] filtrer automatique sur chaque champ d'un filtre
    Par lepopol dans le forum Symfony
    Réponses: 1
    Dernier message: 19/01/2012, 12h34
  4. [TestNG] SELENIUM : pbl arret sur chaque champ
    Par lebaron78 dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 19/09/2011, 18h22
  5. [Toutes versions] [débutant] condition sur une case par ligne, et action sur chaque ligne
    Par touille dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/06/2010, 17h17

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