1

我必须删除数组中包含 id 的记录。

我只是不知道哪个更好用。哪个更快更高效?

代码 1

$array = array('123','456','789' ...)//over 900 entries
$id = implode(',', $array);
$sql = 'DELETE FROM email WHERE id IN ('.$id.')';
//execute sql

或者

代码2

$array = array('123','456','789' ...)//over 900 entries
for($x=0;$x<count($array);$x++){
  $sql='DELETE FROM email WHERE id = '.$array[$x].' ';
  //execute sql
}

两者中哪一个在执行时更快更有效?

4

2 回答 2

5

案例1会更快。

决定总时间的不仅仅是查询的执行时间。解析、准备计划也需要时间。情况2需要做几次,情况1只做一次。删除一行也同样快,但正是查询开销使案例 1 更快。

于 2012-10-24T06:55:24.890 回答
1

第一个产生更好的性能。因为对于第二个查询,如果记录有 1000 行,那么 Web 应用程序必须为每次删除访问数据库 1000 次,并且必须为每个事务更新事务日志。因此,话虽如此,选项1相对而言更好。

于 2012-10-24T07:05:02.117 回答