我设置了一个搜索功能,可以同时运行多个查询。每个查询的前 1000 个结果将写入表中。 (这些运行异步 - 我只是省略了我用来执行此操作的代码)
Insert into Results
Select Top 1000 Text from A where Contains(Text,'"searchString"')
Insert into Results
Select Top 1000 Text from B where Contains(Text,'"searchString"')
Insert into Results
Select Top 1000 Text from C where Contains(Text,'"searchString"')
然后,我从该表中选择前 1000 个结果。
Select Top 1000 * from Results
是否有一种好方法可以在流程早期的任何时刻有效检查是否已经有 1000 个结果,如果有,则取消其他查询并尽快选择 1000 个结果。
以下内容可能会为您提供一个计划,该计划可以实现您期望的结果,即在找到第 1,000 行后不处理任何行。
WITH CTE
AS (SELECT Text
FROM A
WHERE CONTAINS(Text, '"searchString"')
UNION ALL
SELECT Text
FROM B
WHERE CONTAINS(Text, '"searchString"')
UNION ALL
SELECT Text
FROM C
WHERE CONTAINS(Text, '"searchString"'))
INSERT INTO Results
SELECT TOP 1000 Text
FROM CTE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)