A)
* Quelle est la tendance générale au niveau performances ? LIKE est plus rapide mais moins paramétrable ?
rapide si : LIKE 'xxx%' et colonne indexée
lente si : LIKE '%xxx' ou LIKE '%xxx%' même si colonne indexée
B)
* Des mots-clefs comme "AND|OR|NEAR|etc.." sont-ils utilisés par des novices ou internautes lambdas (ma cible) ? Est-ce vraiment utile de prendre des resources pour quelques requêtes qui les utiliseront ?
C'est à vous de voir ! Mais si tel est le cas :
1) AND rapide si même condition que A)
2) OR lent quelque soit le LIKE sauf à transformer cela en requête UNION
3) NEAR nécessite une indexation textuelle !
C)
* Ma solution est le like avec pour chaque mot de la recherche, un % avant et après. Exemple, si le visiteur cherche "voiture noire" ca fera '%voiture% %noire%" ! C'est potable ?
Aucunement avec le LIKE. Si vous voulez des performances il faudra passer par une indexation textuelle.
De plus votre requête n'est pas capable de retrouver la phrase suivante :
"la noire voiture avança dans la nuit"
alors qu'une indexation textuelle oui.
En effet pour une série de mots il faut faire toutes les combinaisons de LIKE. Avec deux mots : 2 combinaisons (%voiture%noire% et %noire%voiture%)
Avec trois mots 6 combinaisons....
Lisez l'article que j'ai écrit sur l'indexation textuelle :
http://sqlpro.developpez.com/cours/indextextuelle/
A +
Partager