2010-10-15 11 views
5

Wykonuję duże kwerendy dotyczące usuwania danych w dużych tabelach z indeksami w polach innych niż data. Powiedziano mi, że upuszczenie tych indeksów, wykonanie usuwania, a następnie ponowne zbudowanie indeksu może być szybsze niż samo uruchamianie usunięcia względem tabeli indeksowanej. Czy tak jest?Czy upuszczenie i odtworzenie indeksu może przyspieszyć usuwanie SQL?

Rozumiem, dlaczego faktyczne usuwanie rekordów byłoby szybsze bez indeksu, ale mam wrażenie, że późniejsze przebudowanie go negowałoby jakąkolwiek uzyskaną przewagę prędkości.

Odpowiedz

1

Najpierw podejmując decyzję o usunięciu indeksów, należy porównać koszt (lub czas), aby zachować indeks podczas usuwania, koszt odtworzenia indeksu po usunięciu. Dwa z najbardziej wpływowych czynników to liczba wierszy w tabeli i liczba lub wiersze usunięte.

Gdy liczba wierszy jest mała lub liczba wierszy do usunięcia jest mała, nie odniesiesz korzyści, usuwając najpierw indeksy. Ale jeśli masz dużą tabelę i wiele wierszy do usunięcia, koszt aktualizacji indeksu rośnie, aż osiągniesz punkt, w którym utrzymanie indeksu jest bardziej kosztowne niż usunięcie i ponowne utworzenie indeksu.

Ponieważ wskazujesz, że robisz wiele dużych usunięć, moim przeczuciem jest to, że możesz pomóc w usuwaniu i odtwarzaniu indeksów.

0

Jeśli twoje indeksy mają słaby współczynnik wypełnienia, to jestem pewien, że tak.

Powiązane problemy