1

嗨,我正在使用 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

因此要提高性能(因为 Document 表很大)。我需要执行 CONTAINSTABLE 函数,而不是对所有 dbo.Docuemnt 表,仅对绑定到 VehicleId 的文档(因为其余搜索是不必要的)执行此操作是否有解决方法或方法?谢谢

4

1 回答 1

2

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

另一种方法是通过附加唯一键来“处理”索引文本。例如,“VEHICLEID001” 那么除了其他关键字外,您还可以搜索“VEHICLEID001”。微软不赞成这种做法是一种反做法,但确实有效。

于 2012-12-05T05:16:02.060 回答