(11-03-2011, 12:07 AM)oxman a écrit : Non mais je suis au courant de tout ça, essaye de faire des requêtes sur tes tables de ce type sans index, tu verras le résultat
Stop la mauvaise foi : je n'ai jamais dit qu'il ne fallait pas mettre d'index, Juste qu'il fallait mettre des index pertinents.
(11-03-2011, 12:07 AM)oxman a écrit : Il n'y aura en effet aucun intérêt à utiliser l'index année si tu l'utilises seul, mais si tu l'utilises avec le jour, ou le mois, ou les deux, là ça devient bien plus utile :p
Oui mais uniquement si tu l'utilise en combinaison avec des recherches précises sur les valeurs des autres index. Par exemple
Code :
EXPLAIN SELECT * FROM logfile WHERE jour = 21 and mois=08 and annee=2011
------
possible_keys: jour,mois,annee
keys: jour,mois,annee
Using intersect(mois,jour,annee); Using where
EXPLAIN SELECT * FROM logfile WHERE jour BETWEEN 21 and 23 and mois=08 and annee=2011
-------
possible_keys: jour,mois,annee
Key: mois
Extra: Using where
EXPLAIN SELECT * FROM logfile WHERE mois=08 and annee=2011
-------
possible_keys: mois,annee
Key: mois
Extra: Using where
A part dans le premier exemple, ou est l'intérêt de l'index sur l'année ?
PS
c'est d'ailleurs assez amusant de voir comment sans maintenance effective, MySQL se plante sur les cardinalités ce qui pourrait amener à des plans de requête foireux.
Dans une table de 150K enregistrements de date allant de 2011 à 2013 (celle qui m'a servi pour les tests) il me renvoie les cardinalités suivantes sur les index:
jour:210
mois:82
année:7
Quand on te dit qu'un projet est terminé à 90%, prépare toi pour les 90% suivant
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC