SQL效率和速度

时间:2012-10-24 06:49:12

标签: php sql performance

我必须删除包含数组中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
}

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

2 个答案:

答案 0 :(得分:5)

案例1会更快。

执行查询的时间不仅仅决定了总时间。 解析,准备计划也需要时间。在需要多次完成的情况2中,在情况1中仅执行一次。删除一行同样会很快,但是查询开销会使案例1更快。

答案 1 :(得分:1)

第一个产生更好的性能。因为对于第二个查询,如果记录有1000行,那么每次删除时,Web应用程序必须为数据库命中1000次,并且必须为每个事务更新事务日志。所以说到这一点,选项1更好一些。