[英]Proper MySQL way to add a column from one table to another
我有一個大表(約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實例上對此進行試驗,因為它應該比我的個人桌面快得多並且具有更多的內存) 。
您是否嘗試就地添加該列?
alter table big_table add new_column tinyint;
update big_table bt
join smaller_table st
on bt.key1 = st.key1
and bt.key2 = st.key2
set bt.new_column = st.my_column;
alter table big_table modify new_column tinyint not null;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.