SQLServer查询的最大大小?在条款中?有没有更好的方法

SQLServer查询的最大大小?在条款中?有没有更好的方法

SQLServer查询的最大大小是多少?(字符的#)

IN条款的最大尺寸?我想我看到了甲骨文的1000项限制,但是你可以和Anding 2 in一起解决这个问题。SQL Server中类似的问题?

更新那么,如果我需要从另一个系统(非关系数据库)获取1000个GUID并针对SQL Server执行“连接代码”,那么最好的方法是什么?是将1000GUID的列表提交给IN子句呢?还是有另一种更有效的技术?

我还没有对此进行测试,但我想知道是否可以将GUID作为XML文档提交。例如

<guids>
    <guid>809674df-1c22-46eb-bf9a-33dc78beb44a</guid>
    <guid>257f537f-9c6b-4f14-a90c-ee613b4287f3</guid></guids>

然后对Doc和Table执行某种XQuery连接。低于1000项条款的效率?


白衣非少年
浏览 408回答 3
3回答

慕森王

每个SQL批处理都必须符合批次尺寸限制*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。在IN中的大约10k值,但是现在的堆栈要深得多(因为x64),所以它可以很深。更新您已经找到Erland关于将列表/数组传递给SQLServer的文章。在SQL 2008中,您还拥有表值参数它允许您将整个DataTable作为单个表类型参数传递并在其上联接。XML和XPath是另一个可行的解决方案:SELECT&nbsp;...FROM&nbsp;TableJOIN&nbsp;( &nbsp;&nbsp;&nbsp;SELECT&nbsp;x.value(N'.',N'uniqueidentifier')&nbsp;as&nbsp;guid&nbsp;&nbsp;&nbsp;FROM&nbsp;@values.nodes(N'/guids/guid')&nbsp;t(x))&nbsp;as&nbsp;guids&nbsp;ON&nbsp;Table.guid&nbsp;=&nbsp;guids.guid;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server