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 unique vs index multiple


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut index unique vs index multiple
    Bonjour à tous,

    Soit la table "toto", conçue comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    id ->int
    nom -> text
    prenom -> text
    ville -> text
    Soit la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    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 Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    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
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    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 régulier
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 79
    Points
    79
    Par défaut
    Merci beaucoup !

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

    A bientôt,

    LeHibou2

Discussions similaires

  1. Connaitre l'index unique déclenché
    Par Hobbi1 dans le forum Oracle
    Réponses: 4
    Dernier message: 17/11/2006, 15h50
  2. Réponses: 3
    Dernier message: 02/05/2006, 21h36
  3. Réponses: 7
    Dernier message: 27/04/2006, 10h21
  4. Sql Server Express - Probleme index unique et valeurs null
    Par Fayoul dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 17/02/2006, 17h22
  5. [IMP/EXP] Probleme d'index unique
    Par rours dans le forum Oracle
    Réponses: 17
    Dernier message: 18/05/2005, 15h37

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