J'ai besoin de construire une requête sqlserver qui si une colonne de texte a un index de texte complet, elle sera utilisée, sinon, la requête se dégradera à l'approche O (N²) de LIKE '%word%'
?Comment créer une requête sql qui utilise la recherche plein texte si un index existe?
Je crois que la réponse sera quelque chose comme:
IF has_full_text_index('mycolumn')
select mytable_id from mytable where contains(mycolumn, 'word')
ELSE
select mytable_id from mytable where mycolumn like '%word%'
ENDIF
La requête sera générée par un programme. La requête n'aura toujours qu'un seul mot à associer. Le test pour voir si une colonne a un index de texte intégral doit être rapide.
Je suppose que votre question n'a aucun sens pour moi (probablement manquer quelque chose). C'est votre table - ne devriez-vous pas savoir s'il y a un index de texte complet sur la colonne à l'avance? –
Non, mais je ne voulais pas entrer dans l'environnement complexe où ce code est nécessaire. Le cas le plus simple à expliquer est que certains utilisateurs utiliseront une base de données sans le service d'indexation activé et que le logiciel doit encore fonctionner. – neves