1

我想知道截止点在哪里是在数据库中创建一个字段来保存您的数据或在您的代码中自己生成数据。例如,我需要知道从数据库中的两个不同列生成的某个值。Column1-Column2 = Column3。所以这里的问题是在代码中生成该数据会更好,还是我应该创建一个 Column3 并将数据放在那里,同时填充数据库,然后稍后检索它。在我的情况下,数据是两位整数或单个字符串,基本上是小数据。

我正在使用最新的 mysql 编程语言是带有 mysqli 库的 php。此外,该网站不应获得太多流量,数据库的大小最多为 200k 行。

4

2 回答 2

2

这种类型的属性(列)称为派生属性。你不应该把它们放在数据库中,因为它们会增加冗余。只需在获取时放置column1column2计算。比如像这样,

`Column1` - `Column2` as `Column3`

如果您每次创建一个带有附加派生属性的视图时都不用这种方式进行查询。

注意,如果计算是 cpu 密集型的,你应该考虑使用缓存。然后你必须实现这个缓存如何以及何时失效。

于 2012-11-23T22:19:26.670 回答
0

这取决于计算的资源消耗程度以及计算的频率。在您的情况下,它非常简单,因此将差异存储在单独的列中将是多余的。您可以像这样在 SQL 查询中进行计算:

SELECT col1, col2, col1-col2 AS col3...

于 2012-11-23T22:19:52.107 回答