sto affrontando un problema con MS SQL Server 2008 che è:query SQL Server richiede più tempo con il parametro che con costante stringa
Quando eseguo una query utilizzando una stringa hard-coded come parametro, la mia corsa di query veloce ma quando uso un parametro stringa, invece, la query impiega più tempo!
La query di stringa costante impiega 1 secondo mentre l'altra impiega 11 secondi.
Ecco i codici qui sotto:
stringa costante (1 secondo):
SELECT *
FROM VIEWCONTENTS
WHERE COUNTRY = 'ZA'
AND CONTENTTYPE = 'A'
AND TASK = 'R23562';
parametrizzata (11 secondi):
DECLARE @country AS CHAR(2);
SET @country = 'ZA';
SELECT *
FROM VIEWCONTENTS
WHERE COUNTRY = @country
AND CONTENTTYPE = 'A'
AND TASK = 'R23562'
Google "sniffing dei parametri" .... – granadaCoder
Hai confrontato i piani di esecuzione? Leggi anche: http://www.sqlperformance.com/2013/08/t-sql-queries/parameter-sniffing-embedding-and-the-recompile-options –
Poiché l'ottimizzatore non conosce il valore del locale variabile nella seconda query è molto probabile che il piano di query venga modificato per utilizzare una scansione tabella/indice anziché una ricerca. – steoleary