用delete从表中删除数据行的问题?

时间:2022-03-26 22:13:37
用delete从表中删除部份数据,sql server会同时写日志,这样就大大降低了删除速度,如果提高delete的删除速度???
表中有上千万行数据,要从表中删除三四百万条数据,用delete删除确实太慢了!!!

8 个解决方案

#1


写日志是为了防止意外,比如,删除到一半时,系统断电了,或者其他原因导致删除中断了,如果不写日志,则这个删除就只进行到一半,那数据就产生了问题. 
写日志就解决了这个问题,如果出现上述情况,则删除会被取消

#2


写日志是为了防意外,但当我有100%的把握时,也得花大量时间来等待就太麻烦了,而且我可以在删除之前作好备份

#3


我觉得是不是可以这样:
1:把不删除的记录放入临时表
2:用truncate table tablename 把表记录全部删除,这样的删除不留日志
3:再把临时表中的记录插入原表


没有那样的数据,没有测试过速度

#4


今晚:做了一个1000多W的表,测到一半不敢测了,慢得蜗牛一样。
后来做了一个50W个记录,把第2步换为删除原表,最后的结果是:










楼主,你就当我没来过。
暴汗中。。。。。。。。。。。。

#5


既然我上面的方法变态了,索性变态到底:
1:select * into temp1 from 原表 where 不删除的条件
2:删除原表
3:temp1命名为原表



-----------------------
顺便问一下邹老大,delete 相同的记录 比select 相同的记录快?

#6


写日志是为了防意外,但当我有100%的把握时

sql server 不会理会你有没有100%把握,它只会管它能否处理意外.

#7


#8


问题是你还得考虑表中的索引,当你把原表删除后,再从临时表中导入数据,如果不先建索引,是比较快,但数据导完后再建索引,又得慢慢等了,或者先建索引再导数据,哪就更慢了

#1


写日志是为了防止意外,比如,删除到一半时,系统断电了,或者其他原因导致删除中断了,如果不写日志,则这个删除就只进行到一半,那数据就产生了问题. 
写日志就解决了这个问题,如果出现上述情况,则删除会被取消

#2


写日志是为了防意外,但当我有100%的把握时,也得花大量时间来等待就太麻烦了,而且我可以在删除之前作好备份

#3


我觉得是不是可以这样:
1:把不删除的记录放入临时表
2:用truncate table tablename 把表记录全部删除,这样的删除不留日志
3:再把临时表中的记录插入原表


没有那样的数据,没有测试过速度

#4


今晚:做了一个1000多W的表,测到一半不敢测了,慢得蜗牛一样。
后来做了一个50W个记录,把第2步换为删除原表,最后的结果是:










楼主,你就当我没来过。
暴汗中。。。。。。。。。。。。

#5


既然我上面的方法变态了,索性变态到底:
1:select * into temp1 from 原表 where 不删除的条件
2:删除原表
3:temp1命名为原表



-----------------------
顺便问一下邹老大,delete 相同的记录 比select 相同的记录快?

#6


写日志是为了防意外,但当我有100%的把握时

sql server 不会理会你有没有100%把握,它只会管它能否处理意外.

#7


#8


问题是你还得考虑表中的索引,当你把原表删除后,再从临时表中导入数据,如果不先建索引,是比较快,但数据导完后再建索引,又得慢慢等了,或者先建索引再导数据,哪就更慢了