【发布时间】:2011-05-09 20:30:54
【问题描述】:
我正在使用 CONTAINS 关键字来搜索 SQL-Server 全文目录。 我正在查询的表包含(在其他列中)全文索引的文本列,以及表示添加行的日期的“added_date”列(并具有正常索引)。
该表包含大约 7M 行。对全文目录的特定查询可能会返回约 100 万行。我希望使用“added_date”列来减少查询返回的行数。
问题是,当我添加“added_date”条件时,我在执行计划中看到数据库会查询该表两次:一次用于全文目录(在执行计划中称为“远程扫描”),一次用于日期条件。这会强制数据库连接查询的两个部分的结果,因此不会提高性能。
有没有办法强制 SQL Server 只对应用日期条件后剩余的行进行全文查询?
编辑:查询看起来像
SELECT reason, added_date
FROM reasons_table
WHERE CONTAINS(reason, 'a_reason')
AND added_date > getdate()-5
【问题讨论】:
-
请写下你使用的查询和索引。
-
据此:technet.microsoft.com/en-us/library/cc917695.aspx 我试图实现的目标是不可能的:因为 MSFTESQL 服务在数据库引擎之外运行,SQL Server 2005 无法将 SQL 查询的谓词扩展到全文搜索.因此,即使您的查询可能具有显着减少查询返回的最终行数的附加条件,MSFTESQL 服务仍会返回目标搜索的所有匹配键。
标签: sql-server full-text-search