Wiem, że INSERT w tabeli SQL może być powolny z wielu powodów:
- Istnienie INSERT TRIGGERs na stole
- Wiele wymuszonych ograniczeń, które należy sprawdzić (zwykle klucze obce)
- Strona dzieli się w indeks klastrowany, gdy wiersz jest wstawiany na środku tabeli
- Aktualizowanie wszystkich powiązanych indeksów nieklastrowych
- Blokowanie innych działań na stole
- Zły czas odpowiedzi zapisu we / wy
- ... coś mi umknęło?
Jak mogę określić, która jednostka jest odpowiedzialna w konkretnym przypadku? Jak mogę zmierzyć wpływ podziału strony na aktualizacje indeksów nieklastrowanych i wszystko inne?
Mam zapisany proc, który wstawia około 10 000 wierszy na raz (z tabeli tymczasowej), co zajmuje około 90 sekund na 10 000 wierszy. Jest to niedopuszczalnie wolne, ponieważ powoduje przekroczenie limitu czasu przez inne pająki.
Przejrzałem plan wykonania i widzę zadanie INSERT CLUSTERED INDEX oraz wszystkie INDEX SEEKS z wyszukiwania FK, ale wciąż nie mówi mi to na pewno, dlaczego trwa to tak długo. Brak wyzwalaczy, ale tabela zawiera garść kluczy FKeys (które wydają się być poprawnie zindeksowane).
To jest baza danych SQL 2000.