我有一个包含数百个条目的表格,我正在尝试删除一个小范围。这需要很长时间,事实上它并没有被执行。
我从活动监视器监视查询,其状态为“已暂停”
有没有人知道可能导致这个问题的原因?
答案 0 :(得分:1)
您正在运行的SQL是什么?表上的任何触发器,或对具有触发器的表的任何级联删除? “阻止者”列或“等待类型”中的任何内容?
尝试在管理工作室中执行以下操作(在相关数据库上):
dbcc checkdb
dbcc checkcatalog
答案 1 :(得分:0)
根据数据库的大小和删除行时必须检查的约束数量,删除可能需要非常长的时间。我从来没有从我的数据库中删除多行。这对系统来说太耗费资源。这是游标或非数据库代码(C#,Java,无论如何)中的迭代可以击败基于集合的查询的少数几个地方之一。我甚至在删除之间放了几毫秒的小延迟,以确保没有任何东西被锁定太长时间。您可以通过删除表格中的一系列数据来使数据库瘫痪。