|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 89 ![]() |
Bonjour,
J'ai un problème avec la requête suivante : Code :
Un select * est instantané. La table contient 1,2 millions de lignes. J'ai fait un explain mais le résultat me parle pas vraiment: Code :
|
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
Bonjour,
l'instantanéité du "select *" est due uniquement au fait qu'il ne ramène que les 1ères lignes ... s'il devait tout ramener, il passerait à peu près le même temps ! Ensuite, "une piste", ça serait pour optimiser le temps de réponse ? Vu qu'il y a un LIKE '%quelquechose%', c'est difficile. Les '%' sont-ils vraiment indispensables ? Parce que dans une colonne "country", je m'attend à avoir "FR", pas "xxxFRyyyy". En retirant les % (au moins le 1er) - en fait, idéalement, en passant à une égalité -, si la colonne est indexée ET que l'utilisation de l'index est intéressante (à savoir, ça filtre suffisament), il y aura gain de temps. EDIT : sur le temps passé, il y a quand même aussi le temps de faire le distinct, ce qui peut ne pas être négligeable. |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 89 ![]() |
Merci pour la réponse...
Oui effectivement, je recherche une piste pour améliorer le temps de réponse de cette requête. Supprimer les %% n'est pas possible dans ce cas. En revanche j'ai vérifié et constaté l'absence d'index sur les champs country et type. Avec un index j'obtiens des performances raisonnables. Merci pour la piste |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 649 ![]() |
Bonjour,
votre index sur country ne sera pas utilisé si vous faites un like '%valeur%' |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 89 ![]() |
merci pour l'information.
L'index sur type allège donc suffisament la recherche. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com