【问题标题】:use function sql server or entity framework query for calculation in database?使用函数 sql server 或实体框架查询在数据库中进行计算?
【发布时间】:2012-02-02 04:43:58
【问题描述】:

我有一个在数据库中进行复杂计算的 Asp.net 项目。例如:我需要计算员工工资。计算员工工资的这个查询操作非常长且复杂,因为应该计算员工的工作时间以及每月的假期和任务。我的问题:我是否使用函数 sql server 或实体框架查询进行此计算?哪个性能更好?

【问题讨论】:

  • 欢迎来到 Stack Overflow。恐怕我们无法为您提供帮助,因为您的问题缺乏细节。到目前为止,您尝试了什么,结果如何?另请阅读stackoverflow.com/questions/how-to-ask

标签: asp.net sql-server performance entity-framework


【解决方案1】:

无法回答。

一般:

  • SQL 非常适合计算没有业务逻辑的标准元素。按日期、统计分布等分组。

  • 如果您在做很多决定时遇到法律问题,维护等可能会更好地在应用程序中执行操作。也因为 SQL 更难调试并且因为这些可能会改变。如果你长大了,你可能不得不为不同类型的人制定不同的逻辑 - 很多决定,当不同的人群运行不同类编码的不同脚本时很容易做到。

我需要计算员工工资。计算员工工资的这个查询操作很长 并且复杂,因为应该计算员工的工作时间以及每月的假期和任务

我认为这最好通过更倾向于逻辑的编程来完成 - 即在 SQL 之外。除非您是一家大公司,否则在那里处理的数据也不多。

哪个性能更好?

谁在乎呢?

SQL 会更好,但问题是它是否重要。如果每月一次需要 5 分钟,而在 sql server 中需要 1 分钟,那么 sql server 会更好,但这无关紧要。性能驱动的架构很重要——当它产生影响时。在这种情况下,我怀疑它确实如此。在每个线程的 sql server 之外,您可能每秒可以计算超过 1 名员工。现代桌面高端 = 12 个线程 = 每秒 12 人 = 每分钟 720 人。您可以每月轻松地花一个晚上(8 小时)进行计算。自己算算。性能在这里基本上不是问题。

这样的事情无论如何都是分批完成的——你可以每晚分批或每月分批,然后你就有了所有的时间(每月第一天运行,完成)。这是过早的优化,因为只有 10.000 多名员工才有问题。 我会更倾向于长期维护,而法律和合同方面会随着时间而变化。

【讨论】:

  • 我有“会计成本”项目,该计算主要是运行时间。请解释更多并告诉你的想法
  • 不,抱歉-请教前辈。这不是讨论细节的论坛,可能是一个为期一周的计划项目。你问,我们回答。但是“主要是运行时” - 这也意味着开始时数据量有限(您不会在运行时更改 100.000 名员工)。
【解决方案2】:

我认为更好的方法是在数据库中进行计算。但是,这取决于您要进行哪种计算。

【讨论】:

  • 这是一个非答案。最好在数据库中执行,除非在数据库中执行这些操作更糟糕。恭喜。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多