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 ?
答案 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