首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在另一个表中复制数据以提高性能

在另一个表中复制数据以提高性能
EN

Stack Overflow用户
提问于 2018-10-30 06:00:12
回答 1查看 170关注 0票数 0

我目前正在为一个我正在构建的产品设计数据库架构。在开始在MySQL中创建所有内容之前,我只是将所有内容绘制到一个Excel文件中。

目前,我有两个几乎完全相同的不同表。

包含每个用户的每个数据点的最新值的TABLE A

包含每个用户的每个数据点的每日记录的TABLE B

我创建TABLE A的理由是,TABLE B中的行数每天都会随着我拥有的客户数量而增长。例如,假设我有20,000个客户,TABLE B每天将增长20,000行。因此,通过创建TABLE A,我将只需搜索20,000条记录来查找每个用户的每个数据点的最新值,因为我将每天更新这些值;而对于TABLE B,我必须搜索越来越多的行来查找每个用户的最新插入。

这是可接受的还是良好的实践?

或者我应该忘记TABLE A来减少我数据库中的“膨胀”?

EN

回答 1

Stack Overflow用户

发布于 2018-10-31 12:28:40

在既需要“当前”数据又需要“历史”的情况下,这就是我要做的--一个表包含当前数据,另一个表包含历史。对于不同的用途,它们可能会有不同的索引,等等。

我会仔细考虑“历史”和“当前”之间的不同之处,然后使表格不同而不是相同。

当一个新的记录(在您的例子中是20K行)出现时,我至少会把它放到Current中。我也可以将它写入History,从而保持它的完整性(以少量冗余为代价)。或者,当下一行进入Current时,我可能会将行移动到History

我认为没有必要使用PARTITIONing,除非我打算清除“旧”数据。在这种情况下,我会使用PARTITION BY RANGE(TO_DAYS(..))并选择每周/每月/其他方式,这样分区的数量就不会超过大约50个。(如果你选择'daily',History会在几个月后变慢,仅仅是因为分区的原因。)

每天的20,000行--其中许多行从昨天开始就没有变化吗?这可能不是做事情的正确方式。请详细说明每天都发生了什么。您应该避免在History中有重复的行(日期除外)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53054495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档