是否可以告诉CONTAINSTABLE每个搜索字词要查看哪一列?

时间:2015-01-14 00:04:05

标签: sql-server tsql

根据我的理解,可以为CONTAINSTABLE提供一个要在其中搜索的索引列的列表。它将获取给定的搜索参数并在任何指定的列中查找它们。

是否可以使用CONTAINSTABLE在A列中查找“FOO”,在B列中查找“BAR”?

我正在尝试优化我的搜索查询,并且运行缓慢。这是一个基本的CONTAINSTABLE,其他CONTAINS谓词可用于其他列过滤器。如果可能的话,我试图将所有搜索压缩为单个CONTAINSTABLE

2 个答案:

答案 0 :(得分:1)

您可以尝试将CONTAINSTABLE加入另一个CONTAINSTABLE。

SELECT * 
FROM CONTAINSTABLE (schema.FullTextTable, ColumnA, 'FOO') as CT1
JOIN CONTAINSTABLE (schema.FullTextTable, ColumnB, 'BAR') as CT2 ON CT1.[KEY] = CT2.[KEY]
JOIN schema.FullTextTable as FT ON CT1.[KEY] = FT.[KEY]
WHERE.....

然而,在你走这条路之前,我可能会考虑阅读以下帖子; Sql serve Full Text Search with Containstable is very slow when Used in JOIN! 基本上,从CONTAINSTABLE查询中获取关键值的快速临时表可能会有所帮助,然后返回源表以获取所需的其他数据或进行其他过滤。

答案 1 :(得分:0)

我原来问题的直接答案是: