在什么情况下应该存储数据库值以及应该计算它们?
What are cases in which database values should be stored and in which they should be computed?
这是我可以辨别的:
当要经常查询值时,最好存储它们并在每次更改时更新存储的值。原因是您不必每次都重新计算来提高性能。我不确定缓存何时与数据库查询一起发挥作用,因为这将取决于数据库,因此这个因素可能会彻底改变我的立场
根据我猜测的查询计算较少查询的值是有意义的。
我能想到两个额外的因素——对存储和计算都是有益的。首先是与存储值相关的额外 space 以及它是否微不足道。如果不是,计算可能更可行。其次——以一种非常相似的方式——是与计算值相关的时间成本,以及这是否也是微不足道的——这将使查询频率更受关注。
是否有任何其他理由在存储和计算数据库值之间进行选择?
如果它是一个操作/交易数据库,如 ERP 或电子商务商店,那么您完全规范化,并且不存储计算值。
如果是数据仓库,则可以存储计算值。
过早的优化是不成熟的。正确编写您的应用程序,测量性能,发现瓶颈,然后进行优化。
这是我可以辨别的:
当要经常查询值时,最好存储它们并在每次更改时更新存储的值。原因是您不必每次都重新计算来提高性能。我不确定缓存何时与数据库查询一起发挥作用,因为这将取决于数据库,因此这个因素可能会彻底改变我的立场
根据我猜测的查询计算较少查询的值是有意义的。
我能想到两个额外的因素——对存储和计算都是有益的。首先是与存储值相关的额外 space 以及它是否微不足道。如果不是,计算可能更可行。其次——以一种非常相似的方式——是与计算值相关的时间成本,以及这是否也是微不足道的——这将使查询频率更受关注。
是否有任何其他理由在存储和计算数据库值之间进行选择?
如果它是一个操作/交易数据库,如 ERP 或电子商务商店,那么您完全规范化,并且不存储计算值。
如果是数据仓库,则可以存储计算值。
过早的优化是不成熟的。正确编写您的应用程序,测量性能,发现瓶颈,然后进行优化。