嘿那里 - 这是通用于任何调用SQL服务器的操作,或任何需要打开连接的操作。保持Sql连接打开迭代许多请求?或关闭每一步?
假设我有20到1000之间的任何地方选择要为数据中的每个项目循环播放的呼叫。对于每一步,我将从sql中选择,将数据本地存储在结构中,然后继续。这不是一个非常昂贵的调用,所以我应该保持整个循环的连接打开?或者我应该打开并关闭每一步?
运行时开启连接有多昂贵?我认为最好保持连接畅通,但希望得到正确的回应。
谢谢。
嘿那里 - 这是通用于任何调用SQL服务器的操作,或任何需要打开连接的操作。保持Sql连接打开迭代许多请求?或关闭每一步?
假设我有20到1000之间的任何地方选择要为数据中的每个项目循环播放的呼叫。对于每一步,我将从sql中选择,将数据本地存储在结构中,然后继续。这不是一个非常昂贵的调用,所以我应该保持整个循环的连接打开?或者我应该打开并关闭每一步?
运行时开启连接有多昂贵?我认为最好保持连接畅通,但希望得到正确的回应。
谢谢。
有多贵在运行时打开
此只考虑CPU速度和没有按”连接考虑带宽。
保持开放连接可以节省CPU,但会阻止其他请求使用该连接。所以它是一种折衷。很难说什么“正确的回应”是不知道更多,但在任何情况下,似乎是一个是tinkering with tolerances instead of nailing the nominals
这就是说,我通常开始保持连接打开一个单位的SQL工作然后关闭它。
虽然一两件事,的确显得有点粗略就是这条线
20至1000,选择通话,使对数据的每个项目进行循环。
尝试并做更多基于集合的操作。
不只是这个循环,你应该保持连接打开整个请求。这是很好的做法在开始时打开连接只有一次,密切一次(在最后)
你应该改变你的查询(在这种情况下可能加入其他表格)以包含其他表格。尝试在一次数据库调用中获取所有数据。
这是需要很多时间才能查询的1000个数字。
使用ADO.NET的MSSQL中的连接被缓存,所以它不像当关闭连接时,实际的TCP/IP管道与数据库实际上是关闭的。所以关闭和开放并不需要时间。但不管你在做什么,当你做了1000次的时候,它都会加起来。
在一次数据库调用中获取所有数据,关闭连接,然后执行您的C#代码。我尝试并遵循的是每个请求 - 响应循环的一次数据库调用。
您应该使用PDO。它为每个数据库连接创建一个数据对象,并且您可以在一个页面上引用多个数据库,而无需反复打开和关闭。
http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/
我也有在Github上一些公共代码跳开始你。在github上搜索Wrenbjor并查找PDO回购。我会链接它,但我仍然是新来的,所以我只能在帖子中有一个超链接。
发布查询,查询可能会更改为只运行一次(因为SQL基于SET而非过程化)。 – 2011-01-26 05:53:52