create table AC_Article_KeyWords_Relation
(
KeyWords varchar(100),
ArticleId int
)
ArrayList arrOld=new ArrayList();
for(int i=0;i<100000;i++)
{
arrOld.Add("test|"+i);
}
for (int i = 0; i < arrOld.Count; i++)
{
string data = arrOld[i].ToString();
string KeyWords = data.Substring(0, data.IndexOf("|"));
int ArticleId = Convert.ToInt32(data.Substring(data.IndexOf("|") + 1));
deleteAakrResult += ArticleKeyWordsRules.deleteOneDataAC_Article_KeyWords_Relation(KeyWords, ArticleId);
} public static int deleteOneDataAC_Article_KeyWords_Relation(string KeyWords, int ArticleId)
{
UpdateTableData query = new UpdateTableData();
return query.DeleteOneDataAC_Article_KeyWords_RelationQuery(KeyWords, ArticleId);
}数据集文件(Query)
delete from AC_Article_KeyWords_Relation where KeyWords=@KeyWords and ArticleId=@ArticleId我的这个删除速度很慢,大约20条/秒谁能告诉我应该怎么改啊?
实际中的数据时根据两个ArrayList比较得出的,数据会比这还多
for (int i = 0; i < arrOld.Count; i++)
{
string data = arrOld[i].ToString();
string[] strArray=data.split('|');
if(2==strArray.Length)
{
sqlWheres.Add("KeyWords='"+data[0]+"' and ArticleId="+data[1]);
}
}
//生成删除语句
if(sqlWheres.Count>0){
string sqlDelStr="delete from AC_Article_KeyWords_Relation where"+string.Join(" or ",sqlWheres.ToArray())
}
1 为 KeyWords 和 ArticleId 加上索引
2 将所有的删除操作封装在一个事务
建立索引,分布
重写逻辑