jestem w obliczu problemu z MS SQL Server 2008, który jest:zapytań SQL Server trwa dłużej niż z parametrem stałym ciągiem
Kiedy wykonać kwerendy przy użyciu zakodowane ciąg jako parametr, mój bieg zapytania szybko, ale gdy użyję parametru string, zapytanie trwa dłużej!
Stałe zapytanie ciągiem zajmuje 1 sekundę, a drugie trwa 11 sekund.
Oto kody poniżej:
Ciąg stały (1 sekunda):
SELECT *
FROM VIEWCONTENTS
WHERE COUNTRY = 'ZA'
AND CONTENTTYPE = 'A'
AND TASK = 'R23562';
sparametryzowanej (11 sekund):
DECLARE @country AS CHAR(2);
SET @country = 'ZA';
SELECT *
FROM VIEWCONTENTS
WHERE COUNTRY = @country
AND CONTENTTYPE = 'A'
AND TASK = 'R23562'
Google "Sniffing parametrów" .... – granadaCoder
Czy porównałeś plany wykonania? Przeczytaj również to: http://www.sqlperformance.com/2013/08/t-sql-queries/parameter-sniffing-embedding-and-tcompre-options-options –
Ponieważ optymalizator nie zna wartości lokalnego Zmienna w drugim zapytaniu najprawdopodobniej zmienia plan kwerendy na użycie skanowania tabeli/indeksu zamiast szukania. – steoleary