我有一个大表(约 1000 万条记录),其中包含其他较小表的几个键。每个较小的表中的键都是唯一的,但在大表中却不是。我想根据键匹配从一个较小的表中向大表中添加一列,但我不确定这样做的“正确”方法。我有一个可行的解决方案,但它需要相当长的时间(认为这可能是不可避免的),而且通常感觉这不是最佳的方法。这是我所拥有的:
CREATE TABLE new_big_table LIKE big_table;
ALTER TABLE new_big_table ADD(new_column TINYINT NOT NULL);
INSERT INTO new_big_table SELECT big_table.*, smaller_table.my_column
FROM big_table JOIN smaller_table ON big_table.key1 = smaller_table.key1
AND big_table.key2 = smaller_table.key2;
这完成了工作,但它真的闻起来像我做错了。似乎至少我不需要创建表的副本来完成这项工作。有没有更直接(更有效?)的方式来做到这一点?
值得一提的是,这是针对家庭中的个人爱好项目,因此我可以随意占用机器的所有资源(因为我是唯一使用它的人)。因此,如果有任何直接的性能调整技巧可以做这样的事情,我将不胜感激(我正在 Amazon EC2 实例上对此进行试验,因为它应该比我的个人桌面更快并且具有更多内存) .