繁体   English   中英

如何有效地合并两个大型 MySQL 表?

[英]How to efficiently merge two large MySQL tables?

这是我的问题。 我有两张 MySQL 表,一张有 330 万条记录,一张有 70 万条记录。 第二个表中的所有 700,000 条记录都存在于第一个表中,并且两个表有一个共同的列。 我想从两个表中获取所有 700,000 条记录的 select * 并将它们插入到新表中。 我为这两个共同的列创建了一个索引。 这是我通常会做的

INSERT INTO MergedTable (FirstName TEXT, LastName TEXT, Address TEXT) SELECT FirstNameFromTable1, LastName, Address FROM Table1, Table2 WHERE FirstNameFromTable1 = FirstNameFromTable2

但是表的大小导致该语句挂起并最终中断请求。 关于如何更有效地做到这一点的任何想法? 作为参考,这里是我用来制作有问题的两个表的命令。 谢谢你的帮助。

CREATE TABLE Table1 ( FirstNameFromTable1 varchar(300), LastName TEXT, index(FirstNameFromTable1) );
CREATE TABLE Table2 ( FirstNameFromTable2 varchar(300), Address TEXT, index(FirstNameFromTable2) );

分块:

insert into MergedTable (...)
select top 10000 ... from Table1,Table2
where FirstNameFromTable1=FirstNameFromTable2
and not exists (select * from MergedTable where FirstName=FirstNameFromTable1)

运行这个直到 row_count() 为 0,你显然需要 MergedTable.FirstName 上的索引

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM