首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何高效地迁移和同步表?

如何高效地迁移和同步表?
EN

Stack Overflow用户
提问于 2016-09-05 09:55:53
回答 1查看 27关注 0票数 0

我有一个表A,它有数百万条记录,而且还在不断增长。需要在表A中添加一个新列并建立索引,但是迁移这么大的表可能会让人头疼。因此,表B是从表A创建的,问题是如何有效地同步这两个表?有多种情况下,新记录将添加到表A中。

EN

回答 1

Stack Overflow用户

发布于 2016-09-05 11:56:56

要“同步”两个表而不实际合并它们,可以创建一个UNION视图。视图可以像表一样用于计算、操作、数据存储等。这是假设两个表具有相同数量的行,如果不同,您将需要创建主键和外键。

代码语言:javascript
复制
CREATE OR REPLACE VIEW viewname AS
   SELECT * FROM TABLE_A
   UNION ALL
   SELECT * FROM TABLE_B

现在,如果两个表不共享相同数量的行,则两个表之间至少需要一个称为主键和外键的公共字段,要使用主键和外键连接表,您需要使用如下连接:

代码语言:javascript
复制
CREATE OR REPLACE VIEW viewname AS
SELECT TableA.FieldName, TableB.FieldName, TableA.FieldName
FROM TableA
LEFT JOIN TableB 
ON TableA.primarykeyField = TableB.foreignkeyField
UNION ALL
SELECT TableA.FieldName, TableB.FieldName, TableA.FieldName
FROM TableA
RIGHT JOIN TableB 
ON TableA.primarykeyField = TableB.foreignkeyField    

这取决于你想要什么类型的连接,但我认为完全连接会给你最好的结果,完全连接在MySQL中是不受支持的,但是使用左连接、右连接和联合连接都可以得到相同的结果。

或者,如果您只是想将表A中的所有记录复制到表B中,则可以使用此方法。

代码语言:javascript
复制
INSERT INTO TableB
SELECT * FROM TableA;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39323023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档