我有两个巨大的表,表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中,它立即从状态'发送数据'开始。我是对的吗?
另外,我可以用其他更快的方式做到这一点吗?
答案 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;