Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Instrukcja Delete w SQL jest bardzo powolna

Rzeczy, które mogą spowolnić usuwanie:

  • usuwanie wielu rekordów
  • wiele indeksów
  • brakujące indeksy w kluczach obcych w tabelach podrzędnych. (dziękuję @CesarAlvaradoDiaz za wspomnienie o tym w komentarzach)
  • zakleszczenia i blokowanie
  • wyzwalacze
  • kaskadowe usuwanie (tych dziesięciu rekordów nadrzędnych, które usuwasz, może oznaczać usunięcie milionów rekordów podrzędnych)
  • Dziennik transakcji musi się rozwijać
  • Wiele kluczy obcych do sprawdzenia

Więc twoim wyborem jest sprawdzenie, co blokuje i naprawienie tego lub uruchomienie usuwania poza godzinami, kiedy nie będą zakłócać normalnego obciążenia produkcyjnego. Możesz uruchomić usuwanie w partiach (przydatne, jeśli masz wyzwalacze, usuwanie kaskadowe lub dużą liczbę rekordów). Możesz upuścić i odtworzyć indeksy (najlepiej, jeśli możesz to zrobić również poza godzinami pracy).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GETDATE() Przykłady w SQL Server (T-SQL)

  2. Dołącz do dwóch tabel, używaj tylko najnowszej wartości prawej tabeli

  3. Jak wykonać kopię zapasową bazy danych SQL Server za pomocą T-SQL

  4. Przyznaj uprawnienie SELECT do widoku, ale nie do obiektów leżących poniżej

  5. 6 funkcji do pobrania dnia, miesiąca i roku z daty w SQL Server