deleting rows from huge table SQL Server 2016

时间:2018-10-02 09:10:38

标签: sql-server query-optimization

Helo,

I have a huge table T (approx 10^10 records) T.id is a primary key

When i try:

delete from T where id in (1,2,3....)

it works fast (about 50s for 10000 records)

When i try to use equivalent query:

delete from T where id < 10000

it works very long (over 1 hour !!!!)

Any suggestions ?

3 个答案:

答案 0 :(得分:0)

您可以使用以下两种方式混合使用:

delete from T where id in (select id from T where id < 10000)

答案 1 :(得分:0)

我认为另一种方法可能是将要保留的行复制到另一个表。在许多情况下,与删除数据相比,侦听数据要快得多。因此,即使您希望保留90%,这仍然是更快的选择。

我认为至少值得进行一次测试。

祝你好运!

答案 2 :(得分:-1)

如果从表中删除大量记录可能会导致死锁。删除巨大记录的最佳方法是使用EG的“获取日期和月份”列:

DELETE from Table WHERE  id in (1,2,3....) AND YEAR(Date)=2018 AND Month(Date)=1