2011-01-26 43 views
2

嘿那里 - 这是通用于任何调用SQL服务器的操作,或任何需要打开连接的操作。保持Sql连接打开迭代许多请求?或关闭每一步?

假设我有20到1000之间的任何地方选择要为数据中的每个项目循环播放的呼叫。对于每一步,我将从sql中选择,将数据本地存储在结构中,然后继续。这不是一个非常昂贵的调用,所以我应该保持整个循环的连接打开?或者我应该打开并关闭每一步?

运行时开启连接有多昂贵?我认为最好保持连接畅通,但希望得到正确的回应。

谢谢。

+2

发布查询,查询可能会更改为只运行一次(因为SQL基于SET而非过程化)。 – 2011-01-26 05:53:52

回答

2

有多贵在运行时打开

此只考虑CPU速度和没有按”连接考虑带宽。

保持开放连接可以节省CPU,但会阻止其他请求使用该连接。所以它是一种折衷。很难说什么“正确的回应”是不知道更多,但在任何情况下,似乎是一个是tinkering with tolerances instead of nailing the nominals

这就是说,我通常开始保持连接打开一个单位的SQL工作然后关闭它。

虽然一两件事,的确显得有点粗略就是这条线

20至1000,选择通话,使对数据的每个项目进行循环。

尝试并做更多基于集合的操作。

1

不只是这个循环,你应该保持连接打开整个请求。这是很好的做法在开始时打开连接只有一次,密切一次(在最后)

0

你应该改变你的查询(在这种情况下可能加入其他表格)以包含其他表格。尝试在一次数据库调用中获取所有数据。

这是需要很多时间才能查询的1000个数字。

使用ADO.NET的MSSQL中的连接被缓存,所以它不像当关闭连接时,实际的TCP/IP管道与数据库实际上是关闭的。所以关闭和开放并不需要时间。但不管你在做什么,当你做了1000次的时候,它都会加起来。

在一次数据库调用中获取所有数据,关闭连接,然后执行您的C#代码。我尝试并遵循的是每个请求 - 响应循环的一次数据库调用。

相关问题