将列添加到50M +记录表中?最有效的方法?

时间:2018-09-29 13:51:35

标签: mysql sql ruby-on-rails ruby performance

我有一个表products,其中有超过5000万条记录。我想跟踪谁在系统中上传了给定产品,但是仅将uploaded_by_id添加到如此庞大的表中并不是我想要的解决方案。除了联接表,我还能创建什么以查询在给定时间范围内通过给定ID上传的产品? Product.where(uploaded_by_id: @user.id, created_at: time_range)是我需要做的,但我需要更有效的方法。

2 个答案:

答案 0 :(得分:0)

您可能希望研究

之类的工具

两个工具都允许在不锁定表的情况下更改表。

答案 1 :(得分:0)

添加另一个表(垂直分区),而不是触摸主表。新表将具有相同的PRIMARY KEY,但没有AUTO_INCREMENT。新列将进入此表。

仅当新列具有值时,才在新表中创建行。

当您不需要新列时,请继续从旧表中读取。

当您还需要新列时,请使用LEFT JOIN