【发布时间】:2020-02-23 02:43:54
【问题描述】:
应用程序大量使用数据。这是一个房地产潜在客户管理系统,每个潜在客户都可以让我们的用户赚取数千美元,而意外退回其他人的潜在客户将是失去客户信任的必经之路。我们在客户端大量使用实体模式。这要求我们获取数据集合并将它们作为集合存储在客户端上。我在设计数据库时的想法是,如果我在每个表上都有帐户 ID,那么在不从其他帐户返回数据的情况下,通过更少或更多的性能查询,可以更轻松地获取所有数据。我意识到还有其他方法可以解决这个问题,但我们的截止日期很短,必须构建一个包含约 50 个表的完整应用程序,以便在 3 个月内发布测试版。话虽如此,我们还有许多查询大量使用连接和分组方法来防止 (n+1) 次访问数据库。仅仅是分析大量数据需要更大的数据库吗?最大的问题是我们目前只有 45 个活跃客户。该应用程序速度快,感觉很棒,我们只是在推动数据库内存的极限。当前数据库有 8Gb 内存。
这是我做的模式。我知道它没有对键进行标准化,但我读过的所有内容似乎都不会导致这个问题。但我不是数据库专家,如果有任何建议,我将不胜感激。
Account Table:
id
first_name
...etc
Record Table:
id
account_id
address
...etc
Analysis Table:
id
account_id
record_id
expected_return_on_investment
...etc
Comps Table:
id
account_id
record_id
analysis_id
cost
...etc
【问题讨论】:
-
理论上,当您拥有
record_id时,您不需要account_id,因为您可以通过record表访问该帐户。但是如果你实际上不需要来自record的任何东西,那将是不必要的加入,直接加入account会更容易。 -
我就是这么想的,你认为有这样的索引可能是内存问题吗?目前,我们正在使用 8Gb 内存的服务器
-
这取决于表有多大。你说你只有45个客户,那不是很多。但是,如果您为每个客户提供大量数据,那么它就会加起来。
-
有很多权衡,如果不对实际应用程序进行基准测试,没有简单的方法来回答这个问题。
-
真正的问题是什么?我在您的问题中找不到任何具体的内容。
标签: mysql foreign-keys denormalization database-indexes