Simptomi
Pretpostavimo da imate tablicu pomoću ograničenja vanjskog ključa postavljenih na kaskadno brisanje, a statistika u stupcu vanjski ključ ne pokriva cijeli raspon ključnih vrijednosti u tablici (na primjer: Budući da statistika nije ažurirana nakon promjene raspodjele podataka u tablici). U ovom scenariju kada pokušate izbrisati redak koji odgovara ključnoj vrijednosti koja nije zastupljena u statistici statistike, a alat za optimizaciju upita koristi zadanu procjenu kardinalnosti, postupak brisanja sporiji je od očekivanog. Možda ćete primijetiti i da se operacija skeniranja indeksa koristi za pronalaženje podudaranja redaka u tablici referenciranje.
Status
Microsoft je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na".
Rješenje
Taj je problem riješen u sljedećim kumulativnim ažuriranjima za SQL Server:
Napomena Ovaj je popravak omogućen samo kada uključite hitnih popravaka za optimizaciju (bilo putem mogućnosti konfiguracije u opsegu baze podataka, hint upita ili traga zastavicom 4199).
O kumulativnim ažuriranjima za SQL Server:
Svako novo Kumulativno ažuriranje za SQL Server sadrži sve hitne popravke i sve sigurnosne ispravke uključene u prethodno Kumulativno ažuriranje. Pogledajte najnovija kumulativna ažuriranja za SQL Server:
Zaobilazno rješenje
Problem se zaobilazno može riješiti na sljedeće načine:
-
Upotrijebite procjenu naslijeđene kardinalnosti. Dodatne informacije potražite u članku procjena kardinalnosti (SQL Server).
-
Uklanjanje kaskadnog brisanja iz definicije vanjskog ključa i izvršavanje operacije brisanja pomoću značajke uključivanja između nadređenih i podređenih tablica radi postizanja ekvivalentnog kaskadnog brisanja.
-
Ažurirajte statistiku u nadređenoj tablici uz FULLSCAN prije brisanja podataka.
Reference
Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ažuriranja.