首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL性能问题

SQL性能问题
EN

Stack Overflow用户
提问于 2009-02-04 20:01:36
回答 8查看 299关注 0票数 4

我有一个关于SQL性能的问题。我将用伪代码来说明我的问题。

我想知道哪种预成型更好,效果如何?例如,每个页面加载10个项目。在.NET中。是不是快了很多?快一点吗?在SQL上有什么不明显的区别?

代码语言:javascript
复制
foreach(item in mylist) {
CallSQLStoredProc(item.id);
}

vs

代码语言:javascript
复制
int[] ids; // array of ids
CallSQLStoredProc(ids)  // stored procedure returns more than one row for each id
EN

回答 8

Stack Overflow用户

发布于 2009-02-04 20:06:04

第二种选择肯定会更快,因为它是单个网络往返,以及单个SP呼叫。

票数 11
EN

Stack Overflow用户

发布于 2009-02-04 20:08:31

确切地说是第二个,从大约10倍到更快。

如果您对id所做的任何操作都可以在set操作中完成,那么与单独调用SP相比,您将获得数倍的性能提升。

我经常有类似这样的proc:

create procedure proc ( @ids varchar(max) ) as select * from users_tbl u内部联接spiltCSV(@ids)c on c.id = u.id --等等

这是一个基于集合的操作;与在proc中使用游标或使用for循环迭代调用具有单个id的过程的过程方法不同。

票数 2
EN

Stack Overflow用户

发布于 2009-02-04 20:11:04

因为这不适用于ocdecio的答案...

只是扩展一下..。在我所见过的大多数系统中,网络流量是性能的限制因素(假设数据库和前端代码经过合理的调优,这并不是绝对可怕的)。即使您的web服务器和数据库服务器在同一台计算机上,如果您频繁地在两者之间来回调用,进程间通信也可能是一个限制因素。

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

https://stackoverflow.com/questions/513026

复制
相关文章

相似问题

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