KB3107397 – Vylepšená diagnostika plánů provedení dotazů, které zahrnují zásobník reziduálních predikátů v SQL Server

Platí pro
SQL Server 2012 Enterprise SQL Server 2012 Web SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use)

Příznaky

Některé plány provedení dotazů v Microsoft SQL Server zahrnují vzor vyhodnocování filtru nad operací prohledávání tabulky nebo indexu/rozsahu. Některé části predikátu filtru mohou odpovídat klíči indexu, a proto je možné je použít ke spuštění vyhledávání indexu nebo prohledávání rozsahu. Zbývající části predikátu se označují jako "reziduální" a musí být vyhodnoceny pro každý výstup řádku operací skenování nebo rozsahu. To by odpovídalo operátoru filtru. Pokud ale chcete zlepšit výkon, může SQL Server takový filtr přenést dolů na samotný operátor přístupu k tabulkám.

I když tento přístup celkově zlepšuje výkon, za určitých podmínek (například v případě nepřesného odhadu mohutnosti, který souvisí s citlivostí parametrů) může filtr podskenování zpracovávat větší počet řádků, než se očekávalo. Tato skutečnost může být skrytá při řešení potíží s výkonem dotazu, pokud používáte skutečný plán provedení, protože skutečný počet vrácených řádků bude odpovídat počtu řádků po použití zbytkového predikátu, a ne skutečnému počtu řádků, které jsou skenovány z tabulky nebo indexu.

Řešení

Abychom zlepšili diagnostiku scénáře popsaného v části Příznaky, zavádějí aplikace SQL Server 2012 Service Pack 3 (SP3) a SQL Server 2014 SP2 nový atribut XML, Skutečné načtené řádky. Tento atribut poskytuje informace o tom, kolik řádků bylo přečteno operátorem před použitím reziduálního predikátu.

Tato funkce byla poprvé představena v následujících aktualizacích Service Pack pro SQL Server. 

Další informace o aktualizaci SQL Server 2012 Service Pack 3 (SP3) najdete v článku o chybách opravených v aktualizaci SQL Server 2012 Service Pack 3.

Service Pack 2 pro SQL Server pro SQL Server 2014
        
         SQL Server 2016 Service Pack 1 (SP1) 

Informace o aktualizacích Service Pack pro SQL Server

Aktualizace Service Pack jsou kumulativní. Každá nová aktualizace Service Pack obsahuje všechny opravy z předchozích aktualizací Service Pack společně s novými opravami. Doporučujeme použít nejnovější aktualizaci Service Pack a nejnovější kumulativní aktualizaci pro tuto aktualizaci Service Pack. Před instalací nejnovější aktualizace Service Pack není nutné instalovat předchozí aktualizaci Service Pack. Další informace o nejnovější aktualizaci Service Pack a nejnovější kumulativní aktualizaci najdete v tabulce 1 v následujícím článku.

Jak zjistit verzi, edici a úroveň aktualizace systému SQL Server a jeho součástí