2016-04-27 199 views
0

我運行一個簡單的刪除查詢:刪除查詢時間太長的時間來執行

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

但它太長的時間來執行,但它完成 - 但不是很快。該表未編入索引。我也殺了所有的運行會話。幾天回它運行非常順利,我不知道爲什麼,它的表現很奇怪。

請在這裏把你的寶貴想法。

+3

索引將肯定幫助 – Madhivanan

+0

請嘗試刪除批處理明智的記錄 – Antony

+0

當你在'delete'上有'where'子句時,你應該索引該列,否則只要你獲得一些數據量就會很慢。 – henrikstroem

回答

1

雖然索引你對過濾可以幫助(也可以不列;它取決於在表中受影響行的百分比,該表的大小,如何將數據表內等組織),如果刪除以前在可接受的時間運行之前,但它不是任何更多的(使用完全相同的過濾條件),那麼就有一定改變。

我的猜測是表中的數據比以前多得多,但可能有多種因素,例如內存,刪除的索引等等。如果您有執行計劃,這將有所幫助當刪除是與當前執行計劃確定一起運行。這可能會引發一些問題。