Java 在数据库中执行操作和逻辑的好处(SQL)与编程环境(PHP、C#……)

Java 在数据库中执行操作和逻辑的好处(SQL)与编程环境(PHP、C#……),java,php,mysql,database,oracle,Java,Php,Mysql,Database,Oracle,与使用其他编程语言相比,在数据库中执行某些函数或操作有什么好处 例如,假设有一个mysql数据库school,其中包含表students。然后students表具有以下属性(id,name,age,dob):是否最好像数据库中的age计算一样,从当前日期减去dob,然后将其存储在所有学生的age列中?还是最好用编程语言计算,然后将age结果存储到数据库中 这里的目标是让每个学生的年龄每年自动更新。还要确保应用程序的性能是一流的(包括速度) 那么哪种方法更好呢?最好的办法是只在数据库中存储出生日期

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

例如,假设有一个mysql数据库
school
,其中包含表
students
。然后
students
表具有以下属性(
id
name
age
dob
):是否最好像数据库中的
age
计算一样,从当前日期减去
dob
,然后将其存储在所有学生的
age
列中?还是最好用编程语言计算,然后将
age
结果存储到数据库中

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


那么哪种方法更好呢?

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

至于在数据库中还是在应用程序中进行计算更好,通常您应该在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就是这样做的,并且已经做了几十年。

在数据库中存储年龄不是一个好主意。坚持使用DOB,它可以避免很多问题。@NigelRen yea。。。我知道,但我不知道从当前日期中减去DOB是否是一个好主意,以获得存储在另一列中的学生年龄,在数据库中这样做,然后直接提取信息,还是从编程语言中这样做,我认为最好在数据库中进行这种计算,也许使用一个简单的函数来计算年龄。这意味着您从数据库返回的数据稍微少一些,并且该功能可供任何其他应用程序使用。正如Nigel提到的,存储年龄不是一个好主意。在需要的时候计算它。好的,谢谢,我只是想知道它是否会在SQL中给我带来更好的性能,而不是在应用程序中进行计算然后将其发送到SQL中存储,我只是想在SQL中进行计算,然后在应用程序请求时将其推送到前端,我希望确保应用程序运行良好且快速