一个大数据库查询比许多小数据库查询有什么优势

时间:2010-10-26 14:26:09

标签: c# .net sql .net-4.0 c#-4.0

我继承了应用程序,它所做的是从4个视图中获取数据(其中包含xml文件),在1000个记录的块中然后将它们写在xml文件中,所有这些都由具有9个不同的类型参数分割可能性。这意味着在最坏的情况下,每1000个该类型/视图组合将有36个与数据库的连接。

真实数据将存在90.000行,在这种情况下,900 - 936次从数据库中获取最多1000行。

现在我想知道将所有数据读入应用程序并让应用程序使用它来编写900多个文件会带来什么好处。

1000行约800MB,90.000行约81GB数据被传输。

如果我们一次读完所有代码就必须重写代码,虽然这更有意义,但这是一次性的工作。在90.000行之后,我们将永远不再使用此代码。是否值得用2,3个小时来重写代码,这样可以减少连接数量?

4 个答案:

答案 0 :(得分:6)

如果这是一次性的事情,那么为什么要花费任何精力来优化呢?答:不。

但是,让我补充一下,回答你的一般问题,即大查询对许多小问题有什么好处:可能没有。如果你运行一个巨大的查询,你会给中间件留下很多魔力,它可能会或可能不会很好。

虽然同时拥有36个连接也不是最佳,但它可能比运行可返回80千兆字节数据的查询更好。理想的解决方案(如果您不得不多次使用此代码)将重写它以获取数据块,但不会同时打开大量连接。

答案 1 :(得分:4)

代码是否已经有效?如果确实如此,那么我就不会花时间重写它。您可能会冒着在代码中引入错误的风险。既然你将使用它一次又不再使用它,那似乎不值得努力。

答案 2 :(得分:4)

如果我们正在谈论SQL Server,那么大型查询(单个批处理)的最大缺点超过许多小问题(请注意与您要问的问题相反)是只能是每批一个查询计划。

答案 3 :(得分:1)

如果这是一次性工作,我会拒绝。很多时候我做了一些我通常不会做的事情(游标)但仅仅是因为这是一次性工作。

问问自己,在已经有效的东西上花2到3个小时是有意义的,你永远不会再使用它。但是,显然还有其他因素需要考虑。就像这样会锁定你的生产数据库2-3个小时?

如果没有灾难性的副作用我会说你用的是什么。