处理需要从数据库传输大量数据的应用。它包括SELECT和UPDATE查询(即读取和写入DB)。
首先,我需要获得所有产品的清单(大约1000个SKU)。 SELECT查询非常简单:
SELECT
*
FROM
`my_db`.`products`
然后对每个产品进行一些自动更新。 UPDATE查询是这样的:
UPDATE
`my_db`.`products`
SET
`updated` = NOW(),
`mods` = `mods` + 1,
/* a couple more updated fields here, if needed */
现在的问题是哪一个更快/更好地执行:一次操作所有记录的单个查询,或者一个可以使用的PHP循环(例如foreach
或while
)每个产品分开(1000个单行查询)?当然,后者需要WHERE model = 'ABC'
和LIMIT 1
。
为了使问题更复杂(和全面),请考虑其他影响标准,例如:
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. */
在这种情况或那种情况下,是否有一般的“经验法则”来决定哪种方式更好?
答案 0 :(得分:2)
一个包含1000条记录的好语句总是比执行1000条查询更有效,只要你的sql语句写得很好。