Sql 限制CONTAINSTABLE搜索以避免搜索整个表

Sql 限制CONTAINSTABLE搜索以避免搜索整个表,sql,full-text-search,Sql,Full Text Search,嗨,我正在使用CONTAINSTABLE搜索表的一列。 问题是性能。 这是我的疑问: SELECT count(*) FROM dbo.Document d INNER JOIN dbo.DocuemntVehicleXRef vx ON (vx.DocuemntID = d.DocumentID) INNER JOIN CONTAINSTABLE (Document , QueryContent , @searchterm ) ftt ON ( d.DocumentID = ftt.[Key

嗨,我正在使用CONTAINSTABLE搜索表的一列。 问题是性能。 这是我的疑问:

SELECT count(*) 
FROM dbo.Document d
INNER JOIN dbo.DocuemntVehicleXRef vx ON (vx.DocuemntID = d.DocumentID)
INNER JOIN CONTAINSTABLE (Document , QueryContent , @searchterm ) ftt ON ( d.DocumentID = ftt.[Key] )  
WHERE vx.VehicleId = @vehicleId
所以要提高性能(因为文档表很大)。我需要对所有dbo.Docuemnt表执行CONTAINSTABLE函数,而不是只对绑定到VehicleId的文档执行CONTAINSTABLE函数(因为其他搜索是不必要的) 是否有解决方法或方法来做到这一点?
感谢

一种方法是创建多个索引视图,每个视图返回文档的子集。每个视图都有自己的ft索引,您可以管理查询逻辑以仅从相关视图中进行选择。如果您的表很容易分割成常用的块,例如分层类别结构,那么这种方法非常有效


另一种方法是通过附加一个唯一的键来“弄脏”索引文本。例如,“VEHICLEID001”,则除了搜索其他关键字外,还可以搜索“VEHICLEID001”。微软不赞成这种做法,认为这是一种反实践,但确实有效。

很抱歉这个老问题再次出现,但你有没有反实践的来源?我在2007年的一篇文章中发现了这篇建议使用嵌入式过滤器的文章:在性能改进部分。“在SQL Server 2000和2005中,对于某些场景(关系基数远低于全文基数)的有效解决方法是将关系列的内容推送到全文索引中,…”