我必须删除包含数组中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
}
两者中的哪一个在执行时更快更有效?
答案 0 :(得分:5)
案例1会更快。
执行查询的时间不仅仅决定了总时间。 解析,准备和计划也需要时间。在需要多次完成的情况2中,在情况1中仅执行一次。删除一行同样会很快,但是查询开销会使案例1更快。
答案 1 :(得分:1)
第一个产生更好的性能。因为对于第二个查询,如果记录有1000行,那么每次删除时,Web应用程序必须为数据库命中1000次,并且必须为每个事务更新事务日志。所以说到这一点,选项1更好一些。