L'utilisation de JOINDRE déclaration CONTIENT la fonction
Dans la base de données SQL Server, j'ai un point de Vue avec beaucoup de Jointures internes des états. La dernière jointure utilise COMME prédicat et c'est pourquoi il travaille trop lentement. La requête est :
SELECT *
FROM A INNER JOIN
B ON A.ID = B.ID INNER JOIN
C ON C.ID1 = B.ID1 INNER JOIN
...........................
X ON X.Name LIKE '%' + W.Name + '%' AND
LIKE '%' + W.Name2 + '%' AND
LIKE '%' + W.Name3 + '%'
Je veux utiliser CONTIENT au lieu de comme comme :
SELECT *
FROM A INNER JOIN
B ON A.ID = B.ID INNER JOIN
C ON C.ID1 = B.ID1 INNER JOIN
...........................
X ON CONTAINS(X.Name, W.Name) AND
CONTAINS(X.Name, W.Name2) AND
CONTAINS(X.Name, W.Name3)
Je sais que CONTIENT travaille plus vite que COMME et aussi qui ne peuvent pas utiliser CONTIENT des instructions JOIN.
Est-il une solution de contournement dans ce cas ou une suggestion?
Merci à l'avance.
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas que
CONTAINS
ne peut pas être utilisé dans les jointures.Vous juste ne pouvez pas utiliser les colonnes comme deuxième paramètre de
CONTAINS
- voir MSDN - CONTIENT (Transact-SQL)Toutefois, vous pouvez utiliser une variable comme une condition de recherche, de sorte que vous pouvez utiliser un curseur, puis obtenir toutes les données dont vous avez besoin.
Voici quelques très approximative exemple:
En bref, il n'est pas possible de faire cela en utilisant le CONTIENT, il n'est tout simplement pas autorisé dans une JOINTURE de ce genre.
voir: TSQL - UNE jointure à l'aide de texte intégral CONTIENT
Bien qu'il existe des performances, de l'OMI, comme l'est la solution la plus simple ici.
Vous pouvez créer une jointure à l'aide d'un COMME..
quelque chose comme ceci:
ie - sélectionner tout, de TABLE_ONE où la string_column est contenue dans le TABLE_TWO nom