Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre du Club
    Inscrit en
    mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 177
    Points : 51
    Points
    51

    Par défaut index unique vs index multiple

    Bonjour à tous,

    Soit la table "toto", conçue comme ceci :
    Code :
    1
    2
    3
    4
    5
     
    id ->int
    nom -> text
    prenom -> text
    ville -> text
    Soit la requête :
    Code :
    1
    2
     
    SELECT ville FROM `toto` where nom='durand' and prenom='jean'
    Est-il préférable d'avoir un index multiple sur les champs "nom" et "prenom" ou bien deux index sur "nom" et "prenom" indépendants ?

    La notice des index de mysql à ce sujet n'est pas claire pour moi.

    Deuxième niveau de réflexion : dans le cas où les deux seraient existants, lequel serait choisi ?

    Merci à vous,

    A bientôt,

  2. #2
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 896
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2006
    Messages : 13 896
    Points : 25 040
    Points
    25 040

    Par défaut

    Pour commencer, plutôt que le type TEXT, utilise le VARCHAR quand TEXT n'est pas nécessaire.

    Ensuite, Ville devrait être externalisé dans une table des villes pour éviter d'avoir plusieurs fois la même ville sous des orthographes différentes.

    Est-il préférable d'avoir un index multiple sur les champs "nom" et "prenom" ou bien deux index sur "nom" et "prenom" indépendants ?
    Je pense que l'index double est préférable.
    Voir l'article de SQLPro sur l'indexation.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre du Club
    Inscrit en
    mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 177
    Points : 51
    Points
    51

    Par défaut

    Merci Cinéphil,


    Le document que tu as cité indique, page 14 :

    "De plus en utilisant des clefs d'index les plus courtes possible, par exemples des entiers auto
    incrémentés en lieu et place de clefs sous forme de littéraux (immatriculation, numéro de
    sécurité sociale...), comme en en utilisant des index monocolonne en lieu et place d'index
    multicolonnes, on limite les effets de la fragmentation à tous niveaux".

    Je pense donc que je vais éviter les indexes multicolonne car ma table va beaucoup bouger.

    Si quelqu'un passe par là pour me faire savoir que je vais droit dans les ténébres, je reste à son écoute avant de passer en résolu

    A bientôt,

  4. #4
    Expert Confirmé Avatar de ericd69
    Homme Profil pro Eric Dureuil
    Développeur informatique
    Inscrit en
    avril 2011
    Messages
    1 898
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric Dureuil
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2011
    Messages : 1 898
    Points : 3 209
    Points
    3 209

    Par défaut

    salut,

    dans ton exemple, tu as 2 colonnes

    l'indexation multi-colonnes étant basée sur la première si la quantité de valeurs différentes dans la deuxième est faible, je ne pense pas qu'en effet se serait rentable vu la taille de chaque clé de l'index (ici du texte)

    après comme on dit faut tester... faut pas oublier que ça impactera forcément le buffer d'index

    le seul index texte multi-colonnes rentable c'est un index fulltext car au final il ne représente qu'un index unique de "mots" lié aux tuples

    taille d'une clé d'index multi-colonnes:
    taille clé primaire + somme des tailles des colonnes indexées
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  5. #5
    Membre du Club
    Inscrit en
    mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 177
    Points : 51
    Points
    51

    Par défaut

    Merci beaucoup !

    Bon la question réglée à présent !

    A bientôt,

    LeHibou2

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •