簡體   English   中英

正確的MySQL方法將一個表中的列添加到另一個表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM