|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : octobre 2006 Messages : 45 ![]() |
Bonjour,
Lorsque l'on fait un upper sur une colonne sur lequel il y a un index, j'ai cru comprendre que la valeur est recalculée, de ce fait l'optimisation sur l'index ne se fait plus. Y a t'il une manière d'utiliser de manière optimale un index case sensitive ? Par exemple ici (index sur Nom): Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Développeur informatique Inscription : octobre 2006 Messages : 181 ![]() |
Avec nom not like '[Tt][Ee][Ss][Tt]%'
l'index devrait etre utilisé mais il faut voir le cout du like ( je n'en sais trop rien) j'attends le résultat de tes tests et les réactions d'autrui. PS: upper (nom) sera plutot like 'TEST%' |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : octobre 2006 Messages : 45 ![]() |
Merci à toi, je vais tester ça.
Pour ton Post-Scriptum, bien sûr, j'ai recopié trop vite. |
|
|
00
|
|
|
#4 | |
![]() ![]() |
Citation:
Il y a quelques solutions possibles: 1. Utiliser un LIKE comme suggèré par Jean.Cri1 2. Créer une colonne avec les données en UPPER, et indexer cette colonne 3. Mettre le serveur en mode "case insensitive". La 3eme solution est la plus complète, et peut-être très utile, mais attention - elle s'applique au serveur en entier, y compris tous les noms de procédures, colonnes, tables, etc. Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
|
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Développeur informatique Inscription : octobre 2006 Messages : 181 ![]() |
Personnellement j'ai essayé ma proposition et cela n'a PAS MARCHé !!!
Mon showplan ne se sert de l'index que lorsque le debut du like est fixe ( pas de choix [] ). Désolé ... Si quelqu'un a d'autres idées ? |
|
|
00
|
|
|
#6 |
![]() ![]() |
Non, effectivement, les expressions régulières sont un os... et ASE n'autorise pas encore d'index sur fonction
Dans ce cas précis, une des options et effectivement d'ajouter une colonne équivalente à l'UPPER et la renseigner via trigger... ou faire la requête via une SP qui utilisera une table intermédiaire... mais cela équivaudra au scan initial que votre requête fait. N'y a-t-il pas d'aures indexes utilisables dans votre requête complète ?
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql Administrateur SAP Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums ! |
|
|
00
|
|
|
#7 | ||
|
Invité régulier
![]() Inscription : octobre 2006 Messages : 45 ![]() |
J'ai essayé la solution de Jean.Cri1. J'ai un gain de 0 à 24% sur le temps d'exécution. Par contre il est vrai que les plans d'exécution sont identiques. Est-ce normal que 2 plans d'exécution identiques ne génére pas le même temps d'exécution ?
En revanche il y a un truc bizarre sur le show plan de la commande suivante : Code :
Par contre, avec NOT LIKE, le plan d'exécution est le même dans les 3 cas... |
||
|
|
00
|
|
|
#8 | |
![]() ![]() |
Citation:
Mais il n'y a pas (encore) beaucoups de sites qui utilisent la 15! Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
|
|
|
00
|
|
|
#9 | ||
![]() ![]() |
Citation:
Citation:
Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
||
|
|
00
|
|
|
#10 | |
|
Invité régulier
![]() Inscription : octobre 2006 Messages : 45 ![]() |
Citation:
Pour le point 3, j'utilise la version ASE 11.9.2.3, le mode case insensitive est-il supporté ? Merci. |
|
|
|
00
|
|
|
#11 | ||
![]() ![]() |
Pour le point 2, il faut ajouter une nouvelle colonne (p.ex. Nom_Maj), et créer un trigger qui maintient cette colonne à jour.
P.ex. (code non testé!) Code :
Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
||
|
|
00
|
|
|
#12 | |
![]() ![]() |
Citation:
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql Administrateur SAP Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums ! |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com