如何有效地迁移和同步表

  • 本文关键字:同步 迁移 有效地 mysql
  • 更新时间 :
  • 英文 :


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

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

CREATE OR REPLACE VIEW viewname AS
   SELECT * FROM TABLE_A
   UNION ALL
   SELECT * FROM TABLE_B

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

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    

这取决于你想要什么类型的连接,但我认为FULL join会给你最好的结果,MySQL不支持FULL join,但使用LEFT join右join和UNION ALL模仿相同的结果。

或者如果你只是想把所有的记录从表A复制到表B,你可以使用这个

INSERT INTO TableB
SELECT * FROM TableA;

最新更新