我是否应该创建一个新的数据库列?
我不知道在 Mysql 数据库中创建一个新列对我来说是否更好。
我有一张桌子:
计算数据 (id、日期、the_value、状态)
status 是一个布尔值。
我需要一个名为:the_filtered_value
的额外值,
我可以像这样轻松获取它:
从计算数据中选择 IF(status IS FALSE, 0, the_value) AS the_filtered_value
calculated_data
表有数百万个条目,我在以下位置显示 the_value
和 the_filtered_value
图表和数据表(使用 php)。
创建新列 the_filtered_value
更好,还是仅使用 SELECT IF
查询更好?
在 calculated_data
表中 我看到“更好”:
- 性能更好,
- 数据库设计更好,
- 更容易维护
- ......
感谢您的帮助!
I don't know if it is better for me to create a new column in my Mysql database or not.
I have a table :
calculated_data
(id, date, the_value, status)
status is a boolean.
I need an extra value named : the_filtered_value
I can get it easily like this :
SELECT IF(status IS FALSE, 0, the_value) AS the_filtered_value FROM calculated_data
The calculated_data
table has millions of entries and I display the_value
and the_filtered_value
in charts and data tables (using php).
Is it better to create a new column the_filtered_value
in the calculated_data
table or just use the SELECT IF
query?
In "better" I see :
- better in performance
- better in DB design
- easier to maintain
- ...
Thanks for your help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不要添加列。相反,根据原始数据表创建一个视图,并在视图中根据表达式添加一个名为 the_filtered_value 的“虚拟”计算列。
通过这种方式,您将可以轻松访问过滤后的值,而无需将该表达式的“逻辑”复制到代码中的不同位置,同时不存储任何派生数据。此外,在大多数情况下,您将能够直接操作视图,就好像它是一个表一样。
Do not add a column. Instead, create a VIEW based on the original data table and in the view add a "virtual" calculated column called the the_filtered_value based on your expression.
In this way you will have easy access to the filtered value without having to copy the "logic" of that expression to different places in your code, while at the same time not storing any derived data. In addition, you will be able to operate directly on the view as if it were a table in most circumstances.
添加额外的字段会增加应用程序的复杂性,但会使查询更容易(特别是在连接到其他表时)。
我个人总是尝试将数据库中的数据尽可能分开,并在我的应用程序中处理这种情况。使用 MVC 模式可以使这项任务变得更容易。
Adding the extra field adds complexity to your app but make queries easier (specially when joined on other tables).
I personally always try to keep the data as separated as possible on the database and I handle this cases on my application. Using a MVC pattern makes this task easier.
这在 MS SQL 中有效,但我不知道 MySQL 是否支持该语法。
This works in MS SQL but I do not know if MySQL will support the syntax.