Mam bardzo duży stół, więc używam następujących usunąć starsze wpisy:SQL Server partia usuwać za pomocą pętli while nie działa
WHILE (@@ROWCOUNT > 0)
BEGIN
DELETE TOP (5000) FROM myTable
WHERE date < 20130103
END
mam uruchomić ten kilka razy stosując różne daty. Czasem działa dobrze (trwa około 20 minut), ale w innych przypadkach zapytanie kończy się natychmiast i nic nie zostało usunięte. Kiedy tak się dzieje, po prostu wykonuję prostą instrukcję SELECT z tej tabeli, a następnie wypróbuję powyższą instrukcję WHILE ponownie, a następnie działa! Ktoś wie, dlaczego tak jest? Muszę zautomatyzować tę kwerendę, aby działała regularnie, aby kontrolować rozmiar tabeli, ale chcę się upewnić, że faktycznie usuwa się poprawnie po uruchomieniu. Dziękuję Ci.
Jeżeli data nie być zapisany jako ' '2013-01-03'' raczej niż jako liczby? –
Zabawne, że każda odpowiedź całkowicie to pominęła. –
Należy również pamiętać, że samo posiadanie pętli niekoniecznie zmniejsza wpływ na dziennik lub współbieżność w zależności od tego, czy jest to pojedyncza transakcja.Przestanę używać @@ ROWCOUNT do kontroli, dodawania transakcji w pętli i ustawiania zmiennej = @@ ROWCOUNT. Zobacz http://www.sqlperformance.com/2013/03/io-subsystem/chunk-deletes –