首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL SELECT WHERE value IN (‘巨型值列表’)

SQL SELECT WHERE value IN (‘巨型值列表’)
EN

Stack Overflow用户
提问于 2011-11-08 15:52:28
回答 3查看 2.1K关注 0票数 0

注意: SQL Server3.5应用程序调用远程服务器上的C# Server2005DB。

我正在开发一个两步流程。

1)我在Windows索引服务中搜索包含给定单词的文件列表,例如"Bob“。

2)然后,我需要通过从索引服务传入文件名列表,从SQL DB的文档表中检索行的列表。

此时,我从索引服务中检索一个列表,并从文档表中检索所有行,然后在代码中对它们进行过滤。这是不实际的,因为有10,000+文档,并且数据库是通过防火墙的。

我考虑创建一个查询,例如:

从DocName所在的文档中选择列表({来自索引服务的文件列表})

...but给出的文件列表可能有数千个,它不会工作。

那么,我能做的最好的事情是什么?我不想查询数据库中所有的10,000+行,然后将它们传递回防火墙(需要10分钟)。不知何故,我需要传入从索引服务检索到的文件名列表。

linq在这种情况下是如何工作的?

任何建议都非常感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-08 16:27:14

如果您有SQL Server2008,您可以使用Table Valued Parameters,但是对于2005,没有什么比这更优雅的了。

我能想到的最简单的解决方案是:

  • 在数据库中创建一个表,并将索引服务的结果批量插入到表中,以便将查询连接到此表以过滤results
  • Retrieve

这不是一个很好的解决方案,但我不知道有没有一个很好的解决方案--这就是TVP被创建的原因。

票数 3
EN

Stack Overflow用户

发布于 2011-11-08 18:16:06

你可以为这种“大规模”操作评估不同的解决方案,可能不需要使用linq。例如,尝试在SQL Server上实现一个存储过程,它在输入中接收文件名列表并返回文档列表。

票数 0
EN

Stack Overflow用户

发布于 2011-11-10 12:07:16

我选择了一个类似于Bazzz提到的解决方案。

我设置了一个夜间操作,从数据库中复制所需的字段,并在文档文件(PDF)上设置meta标记。然后可以在索引服务中使用元数据;o)

事实证明,对于这种情况,这是一个很好的解决方案,但在Sql Server2005上,Hallainzil所说的将是最佳选择,尽管令人痛苦。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8047380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档