- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Possible Duplicate:
T-SQL WHERE col IN (…)
SQL Server 查询的最大大小是多少? (字符数)
IN 子句的最大大小?我想我看到了有关 Oracle 有 1000 个项目限制的信息,但您可以通过将 2 个 IN 进行 AND 运算来解决这个问题。 SQL Server 中存在类似问题吗?
更新那么,如果我需要从另一个系统(非关系数据库)获取 1000 个 GUID 并对 SQL Server 执行“JOIN in code”,最好的方法是什么?是将 1000 个 GUID 列表提交到 IN 子句吗?或者还有其他更有效的技术吗?
我还没有对此进行测试,但我想知道是否可以将 GUID 作为 XML 文档提交。例如
<guids>
<guid>809674df-1c22-46eb-bf9a-33dc78beb44a</guid>
<guid>257f537f-9c6b-4f14-a90c-ee613b4287f3</guid>
</guids>
然后对文档和表进行某种 XQuery JOIN。效率低于 1000 项 IN 子句?
最佳答案
每个 SQL 批处理都必须适合 Batch Size Limit : 65,536 * 网络数据包大小。
除此之外,您的查询还受到运行时条件的限制。它通常会耗尽堆栈大小,因为 x IN (a,b,c) 只是 x=a OR x=b OR x=c ,它创建了一个类似于 x=a OR (x=b OR (x =c)),因此大量 OR 会使它变得非常深。 SQL 7 将达到 SO at about 10k values in the IN ,但现在的堆栈更深了(因为 x64),所以它可以非常深。
更新
您已经找到了 Erland 的关于将列表/数组传递到 SQL Server 的文章。使用 SQL 2008,您还拥有 Table Valued Parameters它允许您将整个 DataTable 作为单个表类型参数传递并连接它。
XML 和 XPath 是另一个可行的解决方案:
SELECT ...
FROM Table
JOIN (
SELECT x.value(N'.',N'uniqueidentifier') as guid
FROM @values.nodes(N'/guids/guid') t(x)) as guids
ON Table.guid = guids.guid;
关于sql - SQL Server 查询的最大大小? IN 子句?有更好的方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1869753/
我是一名优秀的程序员,十分优秀!