数据库与应用程序

时间:2018-01-26 09:42:22

标签: java mysql sql vb.net loops

很快我就打算将我的应用程序重写为Java(来自VB.NET),因为我有机会在新应用程序中进行大量代码清理,因为用VB.NET编写的是我的第一个应用程序,它对一个人来说非常大。

无论如何,我一直在考虑在MySQLs存储过程中使用循环(我讨厌,我不能真正说出原因),如果查询数据库的数据可能更好,我需要执行循环然后使用客户端PC执行所有这些操作,然后将数据发送回数据库。

操作示例:在我的应用程序中有货物进出。当我在销售商品时,我需要使用先入先出规则将以前购买的商品与卖家联系起来。例如,我买了10个香蕉,然后又买了10个然后是20个。然后我要卖掉其中的30个,所以我连接了前10个香蕉,然后它留给我20个,所以我将它与另外10个链接,所以它留给我10个然后我将它与最后一批香蕉联系起来,但我没有全部使用它们,所以我还剩下20个香蕉。

我看待它的方式:

  1. 存储过程中的循环应该更快,因为它将所有数据都集中在一个地方,但我不确定在数据库中执行此类操作是否是一种好习惯。

  2. 应用程序中的循环需要从数据库中获取数据然后将其发送回来,这可能会使其变坏但我个人认为其他语言中的循环比SQL更容易阅读和调试。

  3. 您怎么看?

1 个答案:

答案 0 :(得分:1)

试图客观地回答我说:这取决于您的查询的复杂性,您需要处理的数据量以及您正在使用的DBMS。

我还想补充一点,因为数据是在数据库中处理的,它并不比你的应用程序更快 - 数据库的主要质量在于SQL集 - 正如戈登·林诺夫(Gordon Linoff)已经写过的那样

如果您没有分析数十万个数据集,那么您可能不需要担心性能问题,但更多关于哪个是最易维护的方式。

根据我的经验,提供过滤数据的简单选择和在我的应用程序中处理它们的智能循环的组合总是做得很好,因为它可维护且相当快。

在您的示例中,这意味着:使用SQL来过滤香蕉的库存并按日期对其进行排序(显然)。然后在应用程序中循环结果,并在获得所需数量的香蕉后停止

使用带窗口的求和函数,您甚至可以将查询结果限制在该点,即数量的累积和超过某个值。