我有一张表A,它有数百万条记录,而且还在增长。需要使用索引向表A添加新列,但迁移这样大的表可能会很头疼。所以表B是在表A的某个点创建的,问题是如何有效地同步这两个表? 在多个方案中,新记录将添加到表A中。
答案 0 :(得分:0)
要同步'如果没有实际合并它们,可以创建一个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 RIGHT JOIN和UNION ALL模仿相同的结果
或者如果您只是想将表A中的所有记录复制到表B,您可以使用它。
INSERT INTO TableB
SELECT * FROM TableA;