使用附加行添加和更新列/创建新表

时间:2014-01-07 12:38:19

标签: mysql sql database sql-update alter-table

我有两个巨大的表,表A中有1000万行,表B中有250万行。两个表都有一个共同的字段ID。表A有~250列,表B有5列。表B中的所有ID都存在于表A中。我想在表A中向表B添加一个字段(以日期格式表示)。我有两个选项,两个都需要很长时间才能运行。我想知道哪个会有效。

选项1:
alter table B add column field date;
update B join A using(id) set a.field=b.field;

选项2:
create table C as select a.*,b.field from B join A using(id);

id在两个表中都被编入索引,而ENGINE是MyISAM。

哪个选项更快?

我认为2,因为在选项1中,添加列需要时间,然后在更新时,状态copy to tmp table需要花费大量时间。在选项1中,它立即从状态'发送数据'开始。我是对的吗?

另外,我可以用其他更快的方式做到这一点吗?

1 个答案:

答案 0 :(得分:1)

如果您只想选择信息,可以创建视图以获取所有数据

CREATE VIEW 'my_view' as select * from B join A on B.id = A.id;

所以你可以运行

select field,any_field from my_view where any_condition;

在数据库中有重复的数据绝对是不明白的

我希望这可以帮到你。这不是你的任何选择。


您也可以自行运行查询

 select  field,any_field from B join A on B.id = A.id where any_condition;