OVH Cloud OVH Cloud

Optimisation

4 réponses
Avatar
Twister
Bonjour,
J'ai une table avec plusieurs milions d'enregistrements.
Je souhaite faire une recherche sur un champ (ma clé primaire en varChar de
255) du type MonChamp like '%TOTO%'
Mais des que j'utilise un like avec 2% c'est tres tres long.

Que dois-je faire pour amélioré mon temps de recherche ?
Merci d'avance car la j'ai tout testé (réindex, patindex et companie .... )

4 réponses

Avatar
Med Bouchenafa
Lorsque tu utilises le premier %, l'index devient inutile.

--
Bien cordialement
Med Bouchenafa

"Twister" a écrit dans le message de
news:
Bonjour,
J'ai une table avec plusieurs milions d'enregistrements.
Je souhaite faire une recherche sur un champ (ma clé primaire en varChar
de
255) du type MonChamp like '%TOTO%'
Mais des que j'utilise un like avec 2% c'est tres tres long.

Que dois-je faire pour amélioré mon temps de recherche ?
Merci d'avance car la j'ai tout testé (réindex, patindex et companie
.... )


Avatar
Jean-Nicolas BERGER
Si ce genre de besoin est fort, oriente-toi eventuellement vers la recherche
de texte intégral...
JN.


"Med Bouchenafa" a écrit dans le message de news:
%
Lorsque tu utilises le premier %, l'index devient inutile.

--
Bien cordialement
Med Bouchenafa

"Twister" a écrit dans le message de
news:
Bonjour,
J'ai une table avec plusieurs milions d'enregistrements.
Je souhaite faire une recherche sur un champ (ma clé primaire en varChar
de
255) du type MonChamp like '%TOTO%'
Mais des que j'utilise un like avec 2% c'est tres tres long.

Que dois-je faire pour amélioré mon temps de recherche ?
Merci d'avance car la j'ai tout testé (réindex, patindex et companie
.... )






Avatar
Fred BROUARD
1) l'utilisation d'une clef de type littéral (alphanumérique) est moins
performante que dans le cas du numérique
2) l'utilisation d'un alpha de taille variable est moins performant qu'un entier
de taille fixe
3) l'utilisation d'une clef longue est moins performante qu'une clef courte.

L'idéal est un entier de la taille du mot du processeur.

Quand aux recherches avec joker (like) elle ne peuvent prendre en compte un
index que dans le cas ou l'unique joker est situé en fin de motif (exemple :
LIKE 'toto%')

Endin, l'utilisation d'un index textuel n'est intéressant que si vous recherchez
des mots...

En d'autres termes, il semble à l'évidence que votre modèle de données soit mal
pensé ! => contre performant...

A +

Twister a écrit:
Bonjour,
J'ai une table avec plusieurs milions d'enregistrements.
Je souhaite faire une recherche sur un champ (ma clé primaire en varChar de
255) du type MonChamp like '%TOTO%'
Mais des que j'utilise un like avec 2% c'est tres tres long.

Que dois-je faire pour amélioré mon temps de recherche ?
Merci d'avance car la j'ai tout testé (réindex, patindex et companie .... )



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Philippe T [MS]
Bonjour,

Oui, le CONTAINS est plus efficace dans ces conditions mais consomme de la
place si le nombre d'enregistrement est important. De plus, la création du
catalogue la première fois est relativement longue : Vivement SQL 2005 !!!
:-)

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"Jean-Nicolas BERGER" wrote in
message news:
Si ce genre de besoin est fort, oriente-toi eventuellement vers la


recherche
de texte intégral...
JN.


"Med Bouchenafa" a écrit dans le message de news:
%
> Lorsque tu utilises le premier %, l'index devient inutile.
>
> --
> Bien cordialement
> Med Bouchenafa
>
> "Twister" a écrit dans le message de
> news:
>> Bonjour,
>> J'ai une table avec plusieurs milions d'enregistrements.
>> Je souhaite faire une recherche sur un champ (ma clé primaire en


varChar
>> de
>> 255) du type MonChamp like '%TOTO%'
>> Mais des que j'utilise un like avec 2% c'est tres tres long.
>>
>> Que dois-je faire pour amélioré mon temps de recherche ?
>> Merci d'avance car la j'ai tout testé (réindex, patindex et companie
>> .... )
>
>