sql >> Databáze >  >> RDS >> Sqlserver

Podivný problém s plánem provádění procedury SQL Server

Zní to, jako byste se setkali s nesprávně uloženým plánem dotazů v mezipaměti kvůli sniffování parametrů.

Můžete uložit uloženou proceduru?

V SQL Server 2005 můžete použít OPTIMALIZOVAT PRO nápověda k dotazu na preferované hodnoty parametrů k nápravě některých problémů spojených s čicháním parametrů:

Přestože SQL Server 2005 nepodporuje OPTIMALIZOVAT PRO NEZNÁMÉ (zavedené v SQL Server 2008), což eliminuje sniffování parametrů pro daný parametr:

OPTION (OPTIMIZE FOR (@myParam UNKNOWN))

Stejného efektu můžete dosáhnout v SQL Server 2005 zkopírováním parametru do místní proměnné a následným použitím místní proměnné v dotazu.



  1. Vrátí nadřazené záznamy s podřízenými záznamy rovnými konkrétním hodnotám A kde se celková množina podřízených záznamů pro daného rodiče rovná konkrétní hodnotě

  2. Příklady transakcí PHP + MySQL

  3. Vyberte z tabulky, pokud je záznam nalezen v jiné tabulce

  4. InnoDB nebo MyISAM - Proč ne obojí?