Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql选择多条记录_Mysql_Performance - Fatal编程技术网

Mysql选择多条记录

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

我有3个表
abc
aba和c都通过一个id
a.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
vs
VALUES(..)
简单地复制所有内容而不是指定列吗?当连接表格以及插入与选择相结合时,我总是感到困惑。请检查编辑的答案。它有一些错误。是,如果列与值匹配,则可以。如果为所有列传递值,但需要指定
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
这是预期的结果集。然而,这给了我太多的插入数据。你认为这会改变我的结果吗?是的。这很有效。我有点想过头了。它需要知道,
选择
加入
,内部查询如何正确地找到效率。在这里,我认为使用no
JOIN
更有效。如果你有时间,你可以测试他们两个,让我们知道。