2016-04-27 15 views
0

ausführen ich eine einfache Löschabfrage leite:Delete Abfrage dauert zu lange Zeit

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

Aber seine zu lange Zeit auszuführen nehmen, obwohl sie vollendet ist - aber nicht schnell. Die Tabelle ist nicht indiziert. Ich habe auch alle laufenden Sitzungen getötet. Vor ein paar Tagen lief es sehr flüssig, ich weiß nicht warum, es benimmt sich komisch.

Bitte werfen Sie Ihre wertvollen Gedanken hierhin.

+3

Indexierung wird definitiv helfen – Madhivanan

+0

bitte versuchen, Batch weise Datensätze zu löschen – Antony

+0

Wenn Sie eine 'where'-Klausel auf Ihrem' löschen' haben, sollten Sie diese Spalte indizieren, sonst wird es langsam, sobald Sie eine gewisse Menge an Daten erhalten . – henrikstroem

Antwort

1

Beim Indexieren der Spalte, nach der gefiltert wird, kann dies hilfreich sein (möglicherweise nicht; abhängig vom Prozentsatz der Zeilen in der Tabelle, die betroffen sind, der Größe der Tabelle, der Organisation der Daten in der Tabelle usw.)), wenn das Löschen zuvor in einer akzeptablen Zeit zuvor ausgeführt wurde, aber nicht mehr (unter Verwendung der exakt gleichen Filterbedingung), dann muss sich etwas geändert haben.

Meine Vermutung ist, dass Sie viel mehr Daten in der Tabelle als zuvor haben, aber es könnte eine Vielzahl von Faktoren geben, wie Speicher, ein gelöschter Index usw. Es würde helfen, wenn Sie den Ausführungsplan von hatten wenn der Löschvorgang ordnungsgemäß ausgeführt wurde, zusammen mit dem aktuellen Ausführungsplan. Das könnte einige Probleme verursachen.

Verwandte Themen