Symptomer
Antag, at du har en tabel, der bruger en begrænsning for en fremmed nøgle, der er indstillet til kaskadevis sletning, og statistikken for kolonnen med den fremmede nøgle ikke dækker hele området af nøgleværdierne i tabellen (f.eks.: fordi statistik ikke blev opdateret, efter datafordelingen blev ændret i tabellen). I dette scenarie, når du forsøger at slette en række, der svarer til en nøgleværdi, der ikke er repræsenteret i statistik histogrammet, og Forespørgselsoptimering bruger standard estimering af kardinalitet, går sletningen langsommere end forventet. Du vil muligvis også bemærke, at en indeksscanning bruges til at finde de matchende rækker i referencetabellen.
Status
Microsoft har bekræftet, at problemet findes i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".
Løsning
Dette problem er rettet i følgende kumulative opdateringer til SQL Server:
Bemærk! Denne rettelse er kun aktiveret, når du slår optimerings-hotfixes TIL (enten via konfigurationsindstillingen for databasens omfang, forespørgselstip eller sporingsflag 4199).
Om kumulative opdateringer til SQL Server:
Hver ny kumulativ opdatering til SQL Server indeholder alle hotfixes og alle de sikkerhedsrettelser, der var inkluderet i den forrige kumulative opdatering. Se de seneste kumulative opdateringer til SQL Server:
Løsning
Du kan løse dette problem med en af følgende metoder:
-
Brug ældre estimering af kardinalitet. Du kan finde flere oplysninger i estimering af kardinalitet (SQL Server).
-
Fjern kaskadevis sletning fra definitionen af fremmed nøgle, og udfør sletningen ved at bruge JOIN mellem overordnede og underordnede tabeller til at udføre det tilsvarende antal kaskadevise sletninger.
-
Opdater statistik på den overordnede tabel med FULLSCAN, før du sletter data.
Referencer
Få mere at vide om terminologien, som Microsoft bruger til at beskrive softwareopdateringer.