假设您有一个员工数据库和一个包含每个员工开始日期的表。还有其他表格根据角色、资历和雇佣月份描述了他们的假期津贴。还有一个表格,其中包含每个员工使用的假期。
问题:
从性能以及代码和维护的简易性的一般平衡角度来看,通过评估所有表数据来计算员工的假期余额还是将可用假期存储在桶中更好,然后在休假时进行调整。
在我看来,计算可用假期的开销和复杂性,然后计算已占用的假期是不必要的,更有效和更优雅的解决方案是创建一个包含可用假期的表,并在开始时填充它年并在休假时递减它。
电脑不会累。
没有人拥有如此多的员工,以至于对一组索引良好的实际休假行的总和会使他们的服务器停止运行。
什么是一个问题,就是预先计算数据对您的原始交易数据重击的失控。如果您要跟踪假期,则无论如何都需要保留一份天数清单,以用于审计目的,如果没有别的。如果员工质疑您对休假的计算,会发生什么?您能够证明您的号码合理的唯一方法是返回并显示详细信息。
由于您已经拥有交易详细信息,因此保留这些详细信息的预先计算的总和没有多大意义。
从代码复杂性/维护的角度来看,您并没有真正节省任何东西。您编写一次计算剩余假期权利的代码。它是一个单一的 select 语句,其中比读取预先计算的行的单一 select 语句多三个或四个关键字。这不是节省多少。
您所考虑的通常称为预优化,这是应该避免的,因为它实际上使事情变得更糟,而不是使事情变得更好。