这个问题在这里已有答案:
有时我们会发现自己的情况,我们必须从数据库大小或性能中选择一个 .
我正在申请账单会计,其中我在表格设计中存储账单的详细信息
BillNo ProductName Qty Rate
1 aaaa 1 12
我了解到存储数据并不好,我们可以在数据库中运行时计算数据,如 Amount(Qty*Rate)
, Tax(Amount*5/100)
.
但在某些时候我需要数千个条目的总金额和总增值税,如果我按照上述方法首先我需要选择 Qty , Rate
然后对每一行执行乘法然后执行添加,这将是非常耗时的 .
我在想什么: - 继续采用存储数据的方法
BillNo ProductName Qty Rate Tax Amount
1 aaaa 1 12 4 16
Disadvantage:-
- 需要在数据库中存储额外的数据,这也会增加一些性能开销,以便插入Tax和Amount .
Advantage:-
-
只需从数据库中选择一个值 .
-
无需执行乘法运算,这将提高我的性能 .
在这样的条件下哪一个更好,更有效率 .
上面的问题只是解释这个问题的一个例子 . 主要的问题是我是否在检索过程中使用计算列或计算 . 如果您没有大量的记录但是它违反了数据库规则,那么在检索期间计算是很好的 . 是否在计算列之间进行选择或在检索期间进行计算取决于没有记录 .
2 回答
当它成为一个真正的问题时,我总觉得你需要担心性能问题 .
我知道这是一个简单的例子,但是给定正确的索引,像SQL Server这样的RDBMS可以很容易地进行这样的计算 .
我会把实际设计放在首位 . 确保您的设计符合逻辑且业务正确 .
您总是可以通过使用各种数据量(从小数据集到极大数据集,即数百万行)填充表来测试理论并测试性能 .
考虑使用视图,因为它具有轻松更改公式(例如TAX的公式)的额外好处,而无需更改应用程序中的所有语句 .
看到类似需要在这里Computed column for simple multiplication?