Mysql选择多条记录
我有3个表Mysql选择多条记录,mysql,performance,Mysql,Performance,我有3个表abcaba和c都通过一个ida.id=b.id=c.id 我的任务是从a和b中选择a.date早于6个月的所有行,并将它们插入新的数据库进行存档 以下是我到目前为止的情况: insert into dbArchive.a select * from db.a where receivedDate < CURRENT_DATE() - INTERVAL 6 MONTH;` 插入到dbArchive.a中,从db.a中选择*,其中receivedDate
abc
aba和c都通过一个ida.id=b.id=c.id
我的任务是从a和b中选择a.date
早于6个月的所有行,并将它们插入新的数据库进行存档
以下是我到目前为止的情况:
insert into dbArchive.a select * from db.a where receivedDate < CURRENT_DATE() - INTERVAL 6 MONTH;`
插入到dbArchive.a中,从db.a中选择*,其中receivedDate
这似乎从表a中选择了所有超过6个月的条目,并将它们插入到存档数据库表a中
查找表b和表c中具有相同id的所有行并将它们插入存档数据库表b和表c的最佳和最有效的方法是什么
我有超过100万条超过6个月的记录,因此我对性能问题感到厌倦。在插入
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;
因此,在玩了一段时间之后,这似乎是我发现的最有效的方法:
INSERT INTO archive.b SELECT * FROM db.b WHERE `id` IN( SELECT `id` FROM archive.a )
我不确定这是否是最有效的方法,但它可以完成工作。。。我可以使用
SELECT
vsVALUES(..)
简单地复制所有内容而不是指定列吗?当连接表格以及插入与选择相结合时,我总是感到困惑。请检查编辑的答案。它有一些错误。是,如果列与值匹配,则可以。如果为所有列传递值,但需要指定SELECT
列,因为值可以从dbArchive.a
和db.b
中获得,则可以省略INSERT-to
中的列名。虽然不太管用,但已经很近了。我有以下内容:选择rdo.qs_mailContent.id、rdo.qs_mailContent.bodyText、rdo.qs_mailContent.bodyHTML,来自qs_mailArchive.qs_mail INNER JOIN的rdo.qs_mailContent.headers在qs_mailArchive.qs_mail.id=rdo.qs_mailContent.id LIMIT 10
如果我将此语句更改为以下内容,则返回具有以下id的结果:2 5 7 118..
:qs_mailArchive.qs_mail.id=rdo.qs_mailContent.id限制10…我得到以下id:1,23,5,7
这是预期的结果集。然而,这给了我太多的插入数据。你认为这会改变我的结果吗?是的。这很有效。我有点想过头了。它需要知道,选择
,加入
,内部查询如何正确地找到效率。在这里,我认为使用noJOIN
更有效。如果你有时间,你可以测试他们两个,让我们知道。