Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/11/2006, 11h08   #1
Membre du Club
 
Inscription : janvier 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 95
Points : 40
Points : 40
Par défaut [T-SQL]Rercherche par mot clef

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.
ionix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 11h13   #2
Membre du Club
 
Inscription : janvier 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 95
Points : 40
Points : 40
SELECT * FROM tabletest WHERE message LIKE %test% OR msgequipement LIKE %test%

J'ai pensé à ça comme requête. Qu'en pensez-vous ?
ionix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 11h36   #3
Membre du Club
 
Inscription : janvier 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 95
Points : 40
Points : 40
ok bon SELECT * FROM tabletest WHERE message LIKE %test% OR msgequipement LIKE %test%

il manque les quote autour de %test%
Code :
1
2
 
SELECT * FROM tabletest WHERE message LIKE '%test%' OR msgequipement LIKE '%test%'
ionix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 11h48   #4
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 13h27   #5
Membre du Club
 
Inscription : janvier 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 95
Points : 40
Points : 40
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 ?
ionix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 15h21   #6
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 16h21   #7
Membre du Club
 
Inscription : janvier 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 95
Points : 40
Points : 40
Merci beaucoup pour cette réponse très complète !
ionix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h50.


 
 
 
 
Partenaires

Hébergement Web