V případě výskytu takového stavu doporučujeme jako první krok provést a ověřit dopad změny konfigurační konstanty databáze Legacy Cardinality Estimation na ON.
Tuto konfiguraci lze změnit skriptem:
POZOR – lze spouštět pouze na MS SQL 2016 a vyšším! Jinak skript selže.
- Kód: Vybrat vše
-- zjisteni stavu zapnuti predchoziho cardinality estimatoru; vraci 0=vypnuty, 1=zapnuty
SELECT [value]
FROM sys.database_scoped_configurations
WHERE [name] = 'LEGACY_CARDINALITY_ESTIMATION';
-- zmena stavu zapnuti predchoziho cardinality estimatoru; ON=zapnout, OFF=vypnout
ALTER DATABASE SCOPED CONFIGURATION
SET LEGACY_CARDINALITY_ESTIMATION = ON;
Změnu lze provést také v SQL Server Management Studiu, ve vlastnostech (Properties) databáze:
VYSVĚTLENÍ
Microsoft ve verzi MS SQL 2014 a implementoval novou verzi tzv. Cardinality Estimatoru, komponentu, která se stará o odhad počtu řádků, které budou zpracovávány v rámci dotazu. Odhad počtu řádků má zásadní vliv na podobu tzv. exekučního plánu dotazu. Nová verze Cardinality Estimatoru neposkytuje v prostředí HELIOS Orange v mnoha případech nejvhodnější výsledky. Tuto konstelaci MS připouští a jako alternativu řešení navrhuje zapojení předchozí verze této komponenty (https://docs.microsoft.com/en-us/sql/relational-databases/performance/cardinality-estimation-sql-server).