我不知道在 Mysql 数据库中创建新列是否更好。
我有一张 table :
calculated_data (id, date, the_value, status)
状态是一个 bool 值。
我需要一个名为:the_filtered_value
的额外值
我可以像这样轻松获得它:
SELECT IF(status IS FALSE, 0, the_value) AS the_filtered_value FROM calculated_data
calculated_data
表有数百万个条目,我显示 the_value
和the_filtered_value
在图表和数据表中(使用 php)。
创建一个新列是否更好 the_filtered_value
在 calculated_data
表或仅使用 SELECT IF
查询?
在“更好”中我看到:
- 性能更好
- 更好的数据库设计
- 更容易维护
- ...
感谢您的帮助!
最佳答案
不要添加列。相反,根据原始数据表创建一个 View ,并在 View 中根据您的表达式添加一个名为 the_filtered_value 的“虚拟”计算列。
通过这种方式,您将可以轻松访问过滤后的值,而无需将该表达式的“逻辑”复制到代码中的不同位置,同时不存储任何派生数据。此外,在大多数情况下,您将能够直接操作 View ,就好像它是一个表一样。
CREATE VIEW calculated_data_ex (id, date, the_value, status, the_filtered_value)
AS SELECT id, date, the_value, status, IF(status IS FALSE, 0, the_value)
FROM calculated_data
关于sql - 我是否应该创建一个新的数据库列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4596182/