0

我的脚本需要遍历很多行,分析内容,然后对它们进行更新(有选择地)

显然我有一个循环来评估每一行......

我通常会在这个循环中发出一个 SQL UPDATE 查询(对于正在评估的当前行)......事实上,我更喜欢这个,更直接地清理我的代码等。 $q = "UPDATE mytable SET status='online' WHERE id ='22'";

但最近我一直在使用“IN”子句。循环会在 csv 中收集 id,然后再做;

if ids exist do query 
    $q = "UPDATE mytable SET status='online' WHERE id IN(22,25,147)";

那么这两种技术中的任何一种明显更好吗?事实上?或者我也可以坚持我喜欢的地方......

是的,对于我必须做的代码和其他任务,让单个 UPDATE SQL 在循环内触发更容易......

4

1 回答 1

2

单个查询IN (<multiple id's>)应该比多个查询更好id。这是因为服务器必须解析您的 SQL 语句并创建查询计划,并且解析成本通常与实际执行时间相当。解析具有 100 个 id 的语句的成本与使用一个 id 的成本大致相同。

但是,如果收集的项目数超过 100,更好的方法是创建另一个包含这些 id 的表。如果此表在 上具有索引id,那么它对于性能来说将是理想的。

于 2013-04-17T03:49:51.720 回答