【问题标题】:Benefits of performing Operations And logic in Database(SQL) Vs Programming Land(PHP, C#...)在数据库(SQL)与编程领域(PHP、C#...)中执行操作和逻辑的好处
【发布时间】:2017-11-27 19:18:48
【问题描述】:

与在其他编程语言中执行某些功能或操作相比,在数据库中执行某些功能或操作有什么好处?

例如,假设有一个mysql数据库school,表students。那么students表有如下属性(idnameagedob...):会不会像数据库中的age计算一样减去@ 987654329@ 从当前日期开始,然后将其存储在所有学生的age 列中?还是用编程语言计算,然后将age结果存入数据库更好?

这里的目标是让每个学生的年龄每年自动更新。还要确保应用程序的性能是一流的(包括速度)。

那么哪种方法更好呢?

【问题讨论】:

  • 在数据库中存储年龄不是一个好主意。坚持DOB,省去很多问题。
  • @NigelRen 是的...我知道,但我不知道从当前日期中减去 DOB 以将学生年龄存储在另一列中是否是个好主意,是否可以这样做数据库,然后将信息提取出来,或者直接从编程语言中提取
  • 我觉得在数据库中做这种计算比较好,或许用一个简单的函数来计算年龄。这意味着您从数据库中带回的数据略少,并且该功能可供任何其他应用程序使用。就像 Nigel 提到的,存储年龄不是一个好主意。随时计算。

标签: java php mysql database oracle


【解决方案1】:

最好的办法是在数据库中只存储 DATE_OF_BIRTH。当应用程序需要知道学生的年龄时,它可以使用当前日期进行计算。

至于在数据库中进行计算还是在应用程序中进行计算更好,通常您应该在 SQL 中执行 SQL 中可以执行的操作。鉴于无论如何我们都必须查询数据,没有任何应用程序代码会比

select student_id
        , date_of birth
        , floor(months_between(sysdate, date_of_birth)/12) as age_in_years
from students

此解决方案使用 Oracle RDBMS 功能; SQL Server 或 MySQL 的精确语法会有所不同。


“我希望确保应用程序运行良好且快速”

Hadoop 人员经常谈论将计算引入数据。嗯,这不是一个新的见解,这就是 SQL 所做的,并且已经做了几十年。

【讨论】:

  • 好的,谢谢,我只是想知道它是否会给我在 SQL 中更好的性能,而不是在应用程序中进行计算然后将其发送到 SQL 中存储,我只是想这样做在 SQL 中,然后在应用程序请求它时将其推送到前端,我希望确保应用程序运行良好且快速
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 2011-04-21
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
相关资源
最近更新 更多