所以我的问题很简单,有什么更好,更快,在代码中进行计算(比方说java)或只是做复杂的数据库查询(如果我们假设我们可以在两个方面做同样的动作)?一般来说哪种方法更好,为什么?
答案 0 :(得分:0)
我会在代码中做。
在数据库中的查询中进行业务计算会得到应用程序传播的逻辑并且不易理解,而且您经常被绑定到特定存储(即SQL Server / Oracle / MySql / etc),从而有可能实现存储范式的变化(即到NoSQL DB)。 然后在代码中,您可以应用一些注入来轻松地更改代码的行为,使其更易于管理。
答案 1 :(得分:0)
我通常发现编写查询以执行我需要的更快(在开发时)。第一轮关注逻辑正确性,我将使用该查询完成其余功能。我试图在这个阶段避免在循环中进行查询,但除此之外我不太担心性能。
然后,我会看一下整个功能的表现。如果查询太慢,我将解析它并查看服务器的统计信息。我的第一个重点是索引,如果这不起作用,我会尝试重构查询。有时相关的子查询比连接更快,有时联合比WHERE子句中的析取更快,有时它是相反的。
如果使用单个查询无法获得满意的性能,我可能会将其分解为多个查询和/或在代码中执行某些工作。这样的代码往往比同等的查询更复杂,更长,所以除非必要,否则我会尽量避免使用它。