Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Alternativa all'utilizzo di variabili locali in una clausola where

Utilizzo di variabili locali in WHERE il filtro provoca la SCANSIONE COMPLETA DELLA TABELLA. Perché SS non conosce i valori delle variabili locali in fase di compilazione. Quindi crea un piano di esecuzione per la scala più ampia disponibile per la colonna.

Per prevenire il problema delle prestazioni, SS deve conoscere i valori delle variabili in fase di compilazione. Definire un SP e passare queste variabili locali come parametro è una delle soluzioni del problema. Un'altra soluzione consiste nell'usare sp_executesql e passando di nuovo quelle variabili locali come parametro...

Oppure puoi aggiungere OPZIONE (RICIMPILA) alla fine della tua istruzione sql per compilare le tue variabili locali. Questo risolverà il problema delle prestazioni.