我想知道在 MySQL 数据库中拥有冗余列的最佳做法是什么。我想知道这是因为我的数据库中有一个用户表,但我也希望能够显示有关每个用户的许多统计信息。这些统计数据可能包括用户与另一个模型交互的次数或他们收到的消息数。
搜索某个对象(例如消息)的所有记录以便对它们进行计数是否会影响性能?还是在用户表中创建一个名为 total_messages 的冗余列更好,每次添加/删除消息时都会更新?谢谢,这让我困惑了一段时间。
最佳答案
简短的回答:两者兼顾
根据经验,我不喜欢创建和更新可以即时计算(即计数)的数据。因此,在您找到性能瓶颈并进行相应调整之前,我会推迟添加这些冗余统计信息。
您始终可以根据用户事件添加追溯统计信息,这样您就可以通过仅添加您绝对需要的冗余来“增长”您的应用程序。
添加冗余数据可以提高您的性能,但它从来都不是一个放之四海而皆准的解决方案,如果您不断尝试计算和更新可以使用简单的动态计算的使用值,您最终可能会损害整体性能请求。
关于sql - 在 MySQL 中使用多个表和/或在 Rails 应用程序中使用多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1179191/