Bonjour je souhaiterai faire une recherche par mot clef.
C'est possible avec une requete?
Je veux en fait que ça affiche les lignes de ma table ou l'occurence demandée à été trouvée dans un des champs...
Merci d'avance.
Bonjour je souhaiterai faire une recherche par mot clef.
C'est possible avec une requete?
Je veux en fait que ça affiche les lignes de ma table ou l'occurence demandée à été trouvée dans un des champs...
Merci d'avance.
SELECT * FROM tabletest WHERE message LIKE %test% OR msgequipement LIKE %test%
J'ai pensé à ça comme requête. Qu'en pensez-vous ?
ok bon SELECT * FROM tabletest WHERE message LIKE %test% OR msgequipement LIKE %test%
il manque les quote autour de %test%
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT * FROM tabletest WHERE message LIKE '%test%' OR msgequipement LIKE '%test%'
Cela marche évidemment, mais il faut se rendre compte que sur de grandes tables ce genre de requète va être lente, même avec un indexe sur la ou les colonnes qui est utilisée dans la clause WHERE en raison du % initial du pattern utilisé pour le LIKE.
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
Dans ce cas comment faire pour que ça soit plus rapide ? préciser le champs de recherche ?
Ou bien meme en précisant le champ , dans une grande base, sa sera toujours trop long à cause du % ?
La seule solution est d'enlever le % alors ?
Le % initial dans la chaine que l'on recherche implique que toutes les entrées pour ce champs doivent être vérifiée. Si le champs est indexé l'optimiseur peut choisir de faire un "index scan" plutôt qu'un "table scan", ce qui peut être plus rapide, mais sur une grande table cela implique tout de même pas mal de travail.
Il y a certaines techniques qui peuvent améliorer ceci.
Premièrement, si l'on peut utiliser un WHERE champ LIKE 'toto%' et que "champ" est indexé alors la requète sera rapide (utilisation de l'indexe, et positionnement par clef).
Alternativement il faut pré-macher le travail, cad créer une table dans la quelle on a un enregistrement par mot clef et par enregistrement de la table principale, et on fait une jointure entre cette table et la table principale pour trouver ce que l'on cherche.
Au delà il y a encore des solutions plus poussées, comme p. ex. la recherche "full text" qui utilise un moteur de recherche et d'indexation de la société Verity...
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
Merci beaucoup pour cette réponse très complète !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager