我正在使用CONTAINS关键字搜索SQL-Server全文目录。 我正在查询的表包含(在其他列中)全文索引的文本列,以及表示添加行的日期(并且具有正常索引)的“added_date”列。
该表包含大约7M行。对全文目录的特定查询可能返回〜1M行。我希望使用“added_date”列来减少查询返回的行数。
问题在于,当我添加“added_date”条件时,我在执行计划中看到DB将对表进行两次查询:一次用于全文目录(在执行计划中称为“远程扫描”),并且一次为日期条件。这会强制数据库连接查询的两个部分的结果,因此不会实现性能提升。
是否有办法强制SQL Server仅对应用日期条件后剩余的行进行全文查询?
编辑:查询看起来像
SELECT reason, added_date
FROM reasons_table
WHERE CONTAINS(reason, 'a_reason')
AND added_date > getdate()-5
答案 0 :(得分:2)
正如你所指出的那样,你希望这种方式几乎是不可能的。根据您的情况的更大背景,您有一些选择。事实上,那篇文章给了你一些帮助。
以下是我阅读该文章时想到的一些想法:
added_date
谓词可以进一步缩小它。这些是否适用于您的特定情况?