Php MySQL基准测试:1个查询返回1000行,而不是1000个单行查询
在需要从数据库传输大量数据的应用程序上工作。它包括选择和更新查询(即对数据库的读取和写入) 首先,我需要获得所有产品的列表(约1000个SKU)。SELECT查询非常简单: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
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;)
vsSELECT;重复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. */