2016-04-27 89 views
0

我运行一个简单的删除查询:删除查询时间太长的时间来执行

delete from table where column_name in (value1, value2, ...) 

但它太长的时间来执行,但它完成 - 但不是很快。该表未编入索引。我也杀了所有的运行会话。几天回它运行非常顺利,我不知道为什么,它的表现很奇怪。

请在这里把你的宝贵想法。

+3

索引将肯定帮助 – Madhivanan

+0

请尝试删除批处理明智的记录 – Antony

+0

当你在'delete'上有'where'子句时,你应该索引该列,否则只要你获得一些数据量就会很慢。 – henrikstroem

回答

1

虽然索引你对过滤可以帮助(也可以不列;它取决于在表中受影响行的百分比,该表的大小,如何将数据表内等组织),如果删除以前在可接受的时间运行之前,但它不是任何更多的(使用完全相同的过滤条件),那么就有一定改变。

我的猜测是表中的数据比以前多得多,但可能有多种因素,例如内存,删除的索引等等。如果您有执行计划,这将有所帮助当删除是与当前执行计划确定一起运行。这可能会引发一些问题。