我想知道截止点的位置是在数据库中创建一个字段来保存数据或在代码中自己生成数据。例如,我需要知道从数据库中的两个不同列生成的某个值。 Column1-Column2 = Column3。所以这里有一个问题是,在代码中生成数据会更好吗,还是我应该创建一个Column3并将数据放在那里,同时填充数据库然后再检索它。在我的例子中,数据是两位整数或单个字符串,基本上是小数据。
我使用最新的mysql编程语言是php与mysqli库。此网站也不应该获得太多的流量,数据库的大小最多只能是200k行。
答案 0 :(得分:2)
此类属性(列)称为derived attribute。您不应将它们放在数据库中,因为它们会增加冗余。只需将column1
和column2
以及在提取时计算即可。例如,像这样,
`Column1` - `Column2` as `Column3`
如果您每次创建带有添加的派生属性的view时都不打扰这样查询。
注意,如果计算是cpu密集型,则应考虑使用缓存。然后您必须实现此缓存无效的方式和时间。
答案 1 :(得分:0)
这取决于计算资源的耗尽程度以及计算的频率。在你的情况下,它非常简单,因此将差异存储在一个单独的列中将是过度的。您可以在SQL查询中进行计算,如下所示:
SELECT col1, col2, col1-col2 AS col3...