DELETE rows tager MEGA lang tid
Hej,Jeg importere hver dag data fra forskellige servere ... jeg har så et Unique ID for hver server ( SID ) ... og så har de forskellige elementer deres eget ID, på den måde kan jeg så have det i samme table. Det bliver så brugt som min sammensat Clustered key, da alle opslag er specifikt på en server og på den her måde ligger de fysisk tæt på disken og giver bedre performance, og jeg er fri for at vedlige holde et ekstra Unique ID, som sådan set ikke kan bruges til noget.
Nogen gange skal jeg så have slettet alt data fra et bestemt Server ID ...
Men af en eller anden sær grund går mine delete nu helt galt ...
Før grunde jeg bare
DELETE FROM table WHERE SID = 10; - tog ca. 25 mins, men det virkede ...
Jeg lavede det så om til:
DELETE TOP (@Antal) FROM table WHERE SID 10 10; - halverede tiden. Hvor den så looper indtil der ikke er flere rows at slette.
Nu er mit problem så at af en eller anden sjov grund ... så tager det 3-4 timer nu ... ARGH, og den kan jeg ikke lige dreje.
Her er et billede af en Execution Plan:
http://peecee.dk/uploads/082009/capper-0.jpeg
Hvor jeg bare kører en DELETE TOP (100) FROM table.
De andre tables der kan ses er child talbes med relation til den her, som er parent.
Data i de child tables er slettet og det går fint nok ... det er alle mine parent tables hvor execution time er helt hen i skoven.
Jeg er godt klar over at databasen skal flytte nogen data pages og nogen udgår når jeg har mit Clustered Key på den måde ... men i sidste ende vinder jeg forhåbelig på det, da som sagt ... data altid bliver taget ud fra SID'et.
Hvis der skal bruges mere info, så sig endelig til ...
// ouT