J'ai besoin d'extraire des informations d'un champ de texte qui peut contenir l'une des nombreuses valeurs. Le SQL ressemble à:Efficacité de l'instruction SQL 'LIKE' avec un grand nombre de clauses
SELECT fieldname
FROM table
WHERE bigtextfield LIKE '%val1%'
OR bigtextfield LIKE '%val2%'
OR bigtextfield LIKE '%val3%'
.
.
.
OR bigtextfield LIKE '%valn%'
Ma question est: comment cela est efficace lorsque le nombre de valeurs se rapproche des centaines, des milliers et peut-être? Y a-t-il une meilleure manière de faire cela?
Une solution serait de créer une nouvelle table/colonne avec seulement les valeurs que je suis après et procédez comme suit:
SELECT fieldname
FROM othertable
WHERE value IN ('val1', 'val2', 'val3', ... 'valn')
Ce que j'imagine est beaucoup plus efficace car il n'a qu'à faire exactement correspondance de chaîne. Le problème avec ceci est que ce sera beaucoup de travail pour maintenir cette table à jour.
BTW J'utilise MS SQL Server 2005.
Je serais inquiet à propos de la correction, aussi. '% val1%' correspond à 'val11'. –
sql server 2005 offre-t-elle l'indexation de texte intégral? cela ne serait-il pas utile? – andrewWinn
C'est le cas. Ça aide. – intgr