SQL删除多条数据两种方法性能比较
今天看到一段代码,是用代码生成器生成的,代码如下:
public void Delete(List <int> l)
{
foreach (int ISBN in l)
dal.Delete(ISBN); //逐个删除数据
}
这样删除数据会不会造成性能的损失?
因为这样每删除一条数据都要经过编译器编译,增加额外的系统开销。
相比较而言:
"delete from table where id in( "+id[n]+ ") ";这种方法效率应该比前一种有大幅度的提升。
本人入行不久,对代码生成器中的这段代码有所疑虑,感觉大批量的数据的话用代码生成器中的方法是不可行的,本人个人看法,不知道是否正确?
------解决方案--------------------没错
一条一条删除,那么每删除一条都要一次数据连接,这个当然不可取。
现在有很多代码生成器的东西,因为面向对象嘛,但是有些应该适可而止,就比如这个,非常的不建议
------解决方案--------------------ID分类,取某值col最小,其他删除(意即按ID删除多余数据)
delete from tb where id not in (select min(col) from tb group by id)