Précédent   Forum du club des développeurs et IT Pro > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/12/2012, 08h33   #1
LeHibou2
Membre du Club
 
Inscription : mai 2010
Messages : 164
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 164
Points : 41
Points : 41
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,
LeHibou2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 09h47   #2
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
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 659
Points : 25 561
Points : 25 561
Envoyer un message via MSN à CinePhil
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.

Citation:
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 !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 10h29   #3
LeHibou2
Membre du Club
 
Inscription : mai 2010
Messages : 164
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 164
Points : 41
Points : 41
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,
LeHibou2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 12h01   #4
ericd69
Expert Confirmé
 
Avatar de ericd69
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 1 802
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 802
Points : 3 096
Points : 3 096
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...
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2012, 09h35   #5
LeHibou2
Membre du Club
 
Inscription : mai 2010
Messages : 164
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 164
Points : 41
Points : 41
Merci beaucoup !

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

A bientôt,

LeHibou2
LeHibou2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h41.


 
 
 
 
Partenaires

Hébergement Web