Příznaky
Předpokládejme, že máte tabulku s omezením cizího klíče nastavenou kaskádovým odstraněním a statistika sloupce cizího klíče nepokryje celou oblast klíčových hodnot v tabulce (například proto, že se statistiky po změně rozdělení dat v tabulce ne aktualizovaly). Když se v tomto scénáři pokusíte odstranit řádek odpovídající klíčové hodnotě, která není reprezentována v histogramu statistiky, a Optimalizátor dotazů používá výchozí odhad mohutnosti, je operace odstranění pomalejší, než byste čekali. Můžete si také všimnout, že operace kontroly rejstříku se používá k nalezení odpovídajících řádků v odkazující tabulce.
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.
Řešení
Tento problém je opravený v následujících kumulativních aktualizacích pro SQL Server:
Poznámka: Tato oprava je povolená jenom v případě, že zapnete opravy hotfix optimalizátoru (buď prostřednictvím možnosti konfigurace s rozsahem databáze, nápovědy dotazu nebo příznaku sledování 4199).
O kumulativních aktualizacích pro SQL Server:
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace pro SQL Server:
Alternativní řešení
Jako alternativní řešení použijte jednu z následujících metod:
-
Použijte odhad starší mohutnosti. Další informace najdete v tématu Odhad mohutnosti (SQL Server).
-
Odeberte kaskádové odstranění z definice cizího klíče a proveďte operaci odstranění pomocí příkazu JOIN mezi nadřazenou a podřízený tabulkou, pomocí které provedete ekvivalent kaskádového odstranění.
-
Před odstraněním dat aktualizujte statistiky nadřazené tabulky pomocí full VISTA.
Odkazy
Seznamte se s terminologií, kterou Microsoft používá k popisu aktualizací softwaru.