删除查询确实很慢 - 对于大量数据

Dan*_*Dan 0 sql sql-server

我有一个包含2400万用户数据的数据库,我希望在所有表中均匀地清除23/24的数据.

删除语句需要几个小时,我可以做些什么来提高这些查询的效率:

delete from [feedback] where [key]   %24<>0 and [key]  not in (50697,9179, 19392753, 3780,14095, 455141,455144,1576550,719307706,10233,706507,315321,2998138,19275591,73037336,23371,11904062,08496,71959,79765,9969,02315,1850,666824,32289,826578,66284,718017,85204,192179,9406787,469844,9843,13801850,8575204,8927569)
Run Code Online (Sandbox Code Playgroud)

And*_*rew 5

如果您打算只保留数据的1/24,则可以更快地将数据选择到另一个位置,截断原始表并将其复制回来.

如果关键约束/操作约束阻止了这种情况,那么你应该将删除批量分成每个删除数千行,例如每次删除10k行并循环该命令,以避免一个非常大的事务(这是发生的事情)一个删除声明.)