VB.NET delete 附近出现语法错误

 起因是如此简单的一句sql

提示:Timeout 时間已到在操作完成之前超时时间已过或服务器未响应。

1、检查WHERE条件中字段是否已建索引

2、检查是否被其他表引用引用表外键字段上是否已建索引

3、分批次删除,根据容量大小设置条数

首先我们能想到的分批肯定是 TOP

top多少合适呢具体还要根据实际场景自己试。

条数多了会慥成锁阻塞即使条数少了也不是没有阻塞可能的,而且听说频繁的删除操作会造成相同语句的IO差距很大比较不稳定,没有亲自试不知道传闻是不是真的。

有自增列且自增列有索引的情况下分两步走,①取一批次ID②删除 

有自增列且自增列有索引的情况下,根据MIN(ID),MAX(ID)區间分批次删除

当然,最好是将MIN(ID),MAX(ID)先读出来啦,我这里只是示意一下

写法3在各方面都更为优质。当然这个结论是基于我的表约3000w条数据每批5000条删除的情况,不排除其他场景下的会得到其他结论的可能没有万能的语句,大家还是要自己试的啊

我要回帖

 

随机推荐