Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.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 MySQL基准测试:1个查询返回1000行,而不是1000个单行查询_Php_Mysql_Benchmarking_Microbenchmark - Fatal编程技术网

Php MySQL基准测试:1个查询返回1000行,而不是1000个单行查询

Php MySQL基准测试:1个查询返回1000行,而不是1000个单行查询,php,mysql,benchmarking,microbenchmark,Php,Mysql,Benchmarking,Microbenchmark,在需要从数据库传输大量数据的应用程序上工作。它包括选择和更新查询(即对数据库的读取和写入) 首先,我需要获得所有产品的列表(约1000个SKU)。SELECT查询非常简单: SELECT * FROM `my_db`.`products` 然后对每个产品进行一些自动更新。更新查询如下所示: UPDATE `my_db`.`products` SET `updated` = NOW(), `mods` = `mods` + 1, /* a coup

在需要从数据库传输大量数据的应用程序上工作。它包括选择和更新查询(即对数据库的读取和写入)

首先,我需要获得所有产品的列表(约1000个SKU)。SELECT查询非常简单:

SELECT
    *
FROM
    `my_db`.`products`
然后对每个产品进行一些自动更新。更新查询如下所示:

UPDATE
    `my_db`.`products`
SET
    `updated` = NOW(),
    `mods` = `mods` + 1,
    /* a couple more updated fields here, if needed */
现在的问题是,哪一个执行得更快/更好:一次处理所有记录的单个查询,还是一个单独处理每个产品的PHP循环(例如,
foreach
while
)(1000个单行查询)?当然,后者需要一个
,其中model='ABC'
限制1

要使问题更复杂(更全面),请考虑其他影响标准,例如:

  • 如果目标行数不同:100或100000,该怎么办
  • 如果涉及多个表怎么办?请参见下面的联接查询示例


是否有一个通用的“经验法则”来决定在这种或那种情况下哪种方法更好?

只要sql语句写得好,一条包含1000条记录的好语句总是比执行1000条查询更有效。

“这是选择查询”-我看不到查询?我一辈子都看不到这个选择查询所以你的意思是
重复1000次(SELECT;UPDATE;)
vs
SELECT;重复1000次(更新)
?没有选择查询……让我更新帖子。。
SELECT
    *
FROM
    `my_db`.`table1` AS `t1`
    INNER JOIN `my_db`.`table2` AS `t2` ON `t1`.`id` = `t2`.`fk`
    INNER JOIN `my_db`.`table3` AS `t3` ON `t2`.`id` = `t3`.`fk`
    /* Etc. */