我有一个表A,它有数百万条记录,而且还在不断增长。需要在表A中添加一个新列并建立索引,但是迁移这么大的表可能会让人头疼。因此,表B是从表A创建的,问题是如何有效地同步这两个表?有多种情况下,新记录将添加到表A中。
发布于 2016-09-05 11:56:56
要“同步”两个表而不实际合并它们,可以创建一个UNION视图。视图可以像表一样用于计算、操作、数据存储等。这是假设两个表具有相同数量的行,如果不同,您将需要创建主键和外键。
CREATE OR REPLACE VIEW viewname AS
SELECT * FROM TABLE_A
UNION ALL
SELECT * FROM TABLE_B现在,如果两个表不共享相同数量的行,则两个表之间至少需要一个称为主键和外键的公共字段,要使用主键和外键连接表,您需要使用如下连接:
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中,则可以使用此方法。
INSERT INTO TableB
SELECT * FROM TableA;https://stackoverflow.com/questions/39323023
复制相似问题