【发布时间】:2017-03-04 12:40:37
【问题描述】:
假设我有一个包含这些列的简单表格:
|编号 |用户 ID | order_id |
每月大约有 1,000,000 行插入到该表中,并且很明显 user_id 和 order_id 之间的关系是 1 到 M。
会计问题所需的上个月记录和其他仅用于向用户显示订单历史记录。要归档上个月之前的记录,我有两个选择: 首先,创建一个类似的表,每个月将旧记录复制到它。这样它就会根据订单的增长每个月变得越来越大。 其次,创建如下表:
|编号 |用户 ID | order_idsss |
每个月,对于要插入此表的每一行,如果存在user_id,只需更新order_ids,并将新的order_id 添加到order_ids 的末尾。 在这个解决方案中,表中的行数会根据用户增长比例而变大。
假设对于每个解决方案我们都有一个关于 user_id 的索引。 . 现在的问题是,在服务器负载的情况下,哪个对 SELECT all order_ids per user 更优化。 第一个比第二个有更多的记录,但是在第二个中,需要一些编程语言来拆分 order_ids。
【问题讨论】:
-
为各种订单 ID 存储 CSV 数据听起来是个坏主意。如果您在第一个表上设置了索引,可能在时间戳上,查询应该不会那么糟糕。我投票给第一个选项。
-
同意@Tim。永远不要在一行中存储多个值。这是第一个规范化原则。
标签: mysql database-optimization