Mysql选择多条记录

时间:2013-02-28 05:54:18

标签: mysql performance

我有3个表a b c a b和c都通过ID a.id = b.id = c.id

相关联

我的任务是从b和c中选择a.date超过6个月的所有行,然后将它们插入到新的数据库中进行存档。

这是我到目前为止所做的:

insert into dbArchive.a select * from db.a where receivedDate < CURRENT_DATE() - INTERVAL 6 MONTH;`

这似乎选择了表a中超过6个月的所有条目,并将它们插入到归档db表a中。

从表b和c中查找具有相同id的所有行并将其插入到归档db表b和c中的最佳和最有效的方法是什么?

我有超过100万条超过6个月的记录,所以我对性能问题感到厌倦。

2 个答案:

答案 0 :(得分:0)

在此处插入dbArchive.a之后,您可以运行以下内容以dbArchive.b的方式插入dbArchive.c

INSERT INTO dbArchive.b(id, etc..) 
  SELECT db.b.id, etc.. 
  FROM dbArchive.a INNER JOIN db.b ON dbArchive.a.id = db.b.id;

答案 1 :(得分:0)

所以在玩了一段时间后,这似乎是我发现的最佳方法,实际上有效:

INSERT INTO archive.b SELECT * FROM db.b WHERE `id` IN( SELECT `id` FROM archive.a )

我不确定这是否是最有效的方法,但它可以完成工作