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

Alternativa k použití lokálních proměnných v klauzuli where

Pomocí místních proměnných na WHERE filtr způsobí FULL TABLE SCAN. Protože SS nezná hodnoty lokálních proměnných v době kompilace. Vytvoří tedy plán provádění pro největší měřítko, které může být pro sloupec k dispozici.

Aby se předešlo problému s výkonem, musí SS znát hodnoty proměnných v době kompilace. Definování SP a předání těchto místních proměnných jako parametr je jedním z řešení problému. Dalším řešením je použití sp_executesql a znovu předání těchto lokálních proměnných jako parametru...

Nebo můžete přidat OPTION ( ZNOVU KOMPILOVAT ) na konci vašeho příkazu sql, aby byly vaše místní proměnné zkompilovány. To vyřeší problém performans.



  1. Proč sloupec WHERE =NULL nevyvolá chybu v SQL Server?

  2. Jak vrátit výsledek mnoha příkazů select jako jednu vlastní tabulku

  3. Nastavení mezipaměti dotazů MySql

  4. Převeďte složitý SQL dotaz na SQLAlchemy