与在其他编程语言中执行某些功能或操作相比,在数据库中执行某些功能或操作有什么好处?
例如,让我们假设有一个带有表school
的mysql数据库students
。然后students
表具有以下属性(id
,name
,age
,dob
......):通过从当前日期减去age
然后将其存储在dob
列中,将数据库中的age
计算更好吗?全体学生?或者用编程语言计算它然后将age
结果存储到数据库中会更好吗?
这里的目标是让每个学生的年龄每年自动更新。还要确保应用程序性能是一流的(包括速度)。
那么哪种方法更好?
最好的想法是只在数据库中存储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的精确语法将有所不同。
“我希望确保应用程序运行良好,快速”
Hadoopers经常谈论将计算带入数据。那不是一个新的见解,这就是SQL所做的,并且已经做了几十年。