sql - 在 MySQL 中使用多个表和/或在 Rails 应用程序中使用多个列

标签 sql mysql ruby-on-rails database

我想知道在 MySQL 数据库中拥有冗余列的最佳做法是什么。我想知道这是因为我的数据库中有一个用户表,但我也希望能够显示有关每个用户的许多统计信息。这些统计数据可能包括用户与另一个模型交互的次数或他们收到的消息数。

搜索某个对象(例如消息)的所有记录以便对它们进行计数是否会影响性能?还是在用户表中创建一个名为 total_messages 的冗余列更好,每次添加/删除消息时都会更新?谢谢,这让我困惑了一段时间。

最佳答案

简短的回答:两者兼顾

根据经验,我不喜欢创建和更新可以即时计算(即计数)的数据。因此,在您找到性能瓶颈并进行相应调整之前,我会推迟添加这些冗余统计信息。

您始终可以根据用户事件添加追溯统计信息,这样您就可以通过仅添加您绝对需要的冗余来“增长”您的应用程序。

添加冗余数据可以提高您的性能,但它从来都不是一个放之四海而皆准的解决方案,如果您不断尝试计算和更新可以使用简单的动态计算的使用值,您最终可能会损害整体性能请求。

关于sql - 在 MySQL 中使用多个表和/或在 Rails 应用程序中使用多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1179191/

相关文章:

ruby-on-rails - 使用 I18n 延迟查找在 rspec 中测试助手

ruby-on-rails - 从 Rails 中的 ActiveRecord_Relation 中删除元素

sql - 如何在 SQL Server 2008 中将格式为 "property:value,property2:value"的字符串转换为 xml

php - 复杂 SQL 查询的默认下拉选项

ruby-on-rails - 在这部分代码中设置 klass = self 的动机是什么

php - 在 OpenCart 中加速 MySQL 查询

mysql - 添加两列的简单 SQL 测试

sql - 在回退到默认值的树状表中选择数据的最佳方法

mysql - 无法添加外键约束

sql - 哪些类型的情况适契约(Contract)时使用关系数据库和NoSQL数据库?