请问大家是如何一次删除一千条数据的?
如题。
打个比方:页面上用 CheckBoxList 绑定了当前所有的用户,我勾选中了其中的1000个用户,然后按下删除按钮,大家通常都是怎样去删除掉这1000个用户的呢?请阐明你的思路,最好列出简单的代码,我使用的是 .net2.0 + Sql Server2000 ,谢谢。
------解决方案--------------------
如果不用考虑事务的问题,也就是说就删到第101个出错,前100个还是删除成功的话
我一般用拼接SQL语句,然后执行一次 cmd.ExecuteNonQuery();全部删除
C# code
string whereClause = string.Empty;
foreach (遍历CheckBoxList)
{
if (选中)
{
if (whereClause == string.Empty)
whereClause += "'" + 取值 + "'";
else
whereClause += ",'" + 取值 + "'";
}
}
if (whereClause != string.Empty)
{
SqlConnection cn = new SqlConnection(...);
string strSQL = "delete from mytable where id in (" + whereClause + ")";
SqlCommand cmd = new SqlCommand(strSQL, cn);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}
------解决方案--------------------
------解决方案--------------------
上面无非两种做法,一个是循环删除,一个是循环取主键,拼接字符串。
循环删除的人,根本就没有做过任何的效率测验,放大一下,到1w条,这样的做法会导致远程的i/o非常剧烈。。。
拼接字符串是个效率不错的办法,前提是安全性和数据完整性要求不高的情况下。。
另,如果只是做单表删除,可以启动数据库的事务,再循环体里面做删除,循环结束后一起提交。 效率也不会差。也可以支持参数化的删除,安全性也能得到提高。
原因:启动事务之后,一直保持连接,所以对数据库的访问相当于建立一次连接,提交,关闭连接。