Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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
Php 为什么是;在“选择”中插入;比插页慢?_Php_Mysql_Innodb - Fatal编程技术网

Php 为什么是;在“选择”中插入;比插页慢?

Php 为什么是;在“选择”中插入;比插页慢?,php,mysql,innodb,Php,Mysql,Innodb,我在表1中有100000行,我想用相同的数据创建表2(它们都有相同的结构),所以我这样做了 插入到表2中从表1中选择*大约需要15秒 如果用php,我会 while (SELECT * FROM table1){ INSERT INTO table2... } 这需要10秒。为什么insert into select速度较慢?如果执行包含“select*FROM table1”的查询,然后对结果进行迭代,则只会执行一个与从table1中选择数据相关的查询 但是,如果在insert中

我在表1中有100000行,我想用相同的数据创建表2(它们都有相同的结构),所以我这样做了

插入到表2中从表1中选择*
大约需要15秒

如果用php,我会

while (SELECT * FROM table1){

    INSERT INTO table2...

}

这需要10秒。为什么insert into select速度较慢?

如果执行包含“select*FROM table1”的查询,然后对结果进行迭代,则只会执行一个与从table1中选择数据相关的查询

但是,如果在insert中执行“SELECT*fromtable1”,我认为它将为每一行插入和选择,从而导致100000次选择和100000次插入,而不是1次选择和100000次插入


不是100%确定,因此如果我错了,请有人纠正我,我将删除此答案。

如果您执行包含“从表1选择*的查询”,然后对结果进行迭代,您将只执行一个与从表1选择数据相关的查询

但是,如果在insert中执行“SELECT*fromtable1”,我认为它将为每一行插入和选择,从而导致100000次选择和100000次插入,而不是1次选择和100000次插入


不是100%确定,因此如果我错了,请有人纠正我,我将删除此答案。

您是否执行过一次或多次检查?它是平均的还是插入select总是比较慢?与插入相比,MySQL
select
查询使用了相当多的资源。在第一个查询中,您执行100.000
SELECT
查询,而在PHP中您只执行1。每个测试运行两次;让我们看看这两个时间。缓存可以解释这一点。您是运行了检查一次还是多次?它是平均的还是插入select总是比较慢?与插入相比,MySQL
select
查询使用了相当多的资源。在第一个查询中,您执行100.000
SELECT
查询,而在PHP中您只执行1。每个测试运行两次;让我们看看这两个时间。缓存可以解释这一点。