|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 21 ![]() |
Bonjour,
J'ai une requête qui fait une comparaison entre 2 tables. Le WHERE contient une simple vérification entre deux champs character varying(6) NOT NULL. Lorsque je fais ma comparaison avec LIKE entre ces deux champs, la query prends 15 secondes. Lorsque je fais cette même query avec un = cela prend 200 ms. J'aimerais savoir pourquoi? |
|
|
00
|
|
|
#2 |
|
Membre extrêmement actif
![]() ![]() Mathieu Administrateur systèmes et réseaux Inscription : juillet 2005 Messages : 1 476 ![]() |
il me semble que like utilise des index alors que = non , mais je suis pas sure
|
|
00
|
|
|
#3 | |
|
Expert Confirmé
![]() Inscription : septembre 2006 Messages : 2 293 ![]() |
Citation:
|
|
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() |
A mon humble avis, les 2 utilisent des index, pourvu qu'on utilise l'étoile à la fin avec LIKE
Pour utiliser l'étoile au début, utiliser la technique de mettre un index sur REVERSE(champ) ( avec REVERSE une fonction qui inverse l'ordre des caractères ) puis utiliser LIKE sur ce même REVERSE me semble être un bon parti :p |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : novembre 2005 Messages : 266 ![]() |
C'est exactement ce dont on parlait hier au boulot et on en a tiré les mêmes conclusions que Shepard ^^
|
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Développeur informatique Inscription : août 2006 Messages : 221 ![]() |
LIKE, ILIKE ou encore ~ ne font pas des test en expression régulière ?
Du coup ils seraient tout de même un peu plus lent que l'égalité brut. Enfin j'suis pas sûr à 100% non plus.... |
|
|
00
|
|
|
#7 | |
|
Invité de passage
![]() Inscription : février 2007 Messages : 21 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com