sql >> Databáze >  >> RDS >> Sqlserver

Příkaz Delete v SQL je velmi pomalý

Věci, které mohou způsobit, že mazání bude pomalé:

  • smazání velkého množství záznamů
  • mnoho indexů
  • chybějí indexy cizích klíčů v podřízených tabulkách. (děkuji @CesarAlvaradoDiaz za zmínku v komentářích)
  • zablokování a blokování
  • spouštěče
  • kaskádové mazání (těch deset nadřazených záznamů, které odstraňujete, může znamenat odstranění milionů podřízených záznamů)
  • Protokol transakcí potřebuje růst
  • Mnoho cizích klíčů ke kontrole

Takže máte na výběr, abyste zjistili, co blokuje, a opravte to, nebo spusťte mazání v mimopracovních hodinách, kdy nebudou zasahovat do běžného produkčního zatížení. Mazání můžete spustit v dávkách (užitečné, pokud máte spouštěče, kaskádové mazání nebo velký počet záznamů). Indexy můžete vypustit a znovu vytvořit (nejlépe, pokud to můžete udělat i mimo pracovní dobu).



  1. jak zabránit databázi přidat lomítko do uvozovek

  2. Aktualizujte všechny hodnoty sloupce na malá písmena

  3. Jak vybrat řádky podle časového intervalu v mysql?

  4. SQL – levé spojení s operátorem OR (MySQL)