gpt4 book ai didi

database - 存储过程与 .net 应用程序中的复杂处理

转载 作者:太空狗 更新时间:2023-10-30 01:54:09 26 4
gpt4 key购买 nike

我们正在使用 SQL Server 数据库在 .net 3.5 中构建一个新应用程序。该数据库相当大,大约有 60 个表,数据负载很大。 .net 应用程序具有将数据从数据输入和第三方系统导入此数据库的功能。

在数据库中提供所有数据后,系统必须进行大量计算。计算逻辑相当复杂。计算所需的所有数据都在数据库中,输出也需要存储在数据库中。每周都会收集数据,并且需要每周进行计算以生成所需的报告。

由于上述情况,我正在考虑使用存储过程进行所有这些计算。问题是我们还需要数据独立性,而存储过程无法为我们提供这一点。但如果我一直在 .net 中通过查询数据库来完成所有这些工作,我认为它无法快速完成工作。

例如,我需要查询一个表,它将返回 2000 行,然后对于每一行,我需要查询另一个表,该表将返回 300 个结果,而对于每一行,我需要查询多个表(大约 10 个)获取所需数据,进行计算并将输出存储在另一个表中。

现在我的问题是我应该继续使用存储过程解决方案并忘记数据库独立性,因为性能很重要。我还认为如果我们使用存储过程解决方案,开发时间会少很多。如果任何客户想要在 oracle 数据库上使用此解决方案(因为他们不想维护另一个数据库),那么我们将存储过程移植到 oracle 数据库并维护两个版本以备将来更改/增强。同样,其他客户可能会要求其他数据库。


我上面提到的 2000 行是产品 skus。我提到的 300 行是我们要计算的不同属性,例如handling cost, transport cost等。我提到的10张表有关于货币换算,单位换算,网络,区域,公司,售价,每天销售数量等信息。结果表将所有信息存储为星型模式分析和报告的目的。目标是获取有关产品的任何分钟信息,以便了解产品销售的哪些属性让我们付出了金钱以及我们可以在哪些方面进行改进。

最佳答案

我不会考虑在数据库以外的任何地方进行数据操作。

大多数人都尝试使用循环算法处理数据库数据。如果您需要真正的速度,请将您的数据视为一组行,您可以在一次更新中更新数千行。我已经将许多新手程序员编写的游标循环重写为单个更新语句,从而大大缩短了执行时间。

你说:

I need to query one table which will return me 2000 rows then for each row I need to query another table which will return me 300 results than for each row of this I need to query multiple tables (around 10) to get required data

从你的问题来看,你似乎没有使用连接,你已经在循环思考了。即使您确实打算循环,最好编写一个查询以加入所有必要的数据然后循环遍历它。记住更新和插入语句可以有大量复杂的查询来驱动它们。包含在 CASE 语句、派生表、条件连接(左外连接)中,您几乎可以在单个更新/插入中解决任何问题。

关于database - 存储过程与 .net 应用程序中的复杂处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/535742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com