SQL Parameter Slows Down Query

У меня есть запрос, который я использую с SQL Server 2008R2 через ADO.NET. Когда я использую предложение LIKE inline, оно работает менее чем за секунду, при этом возвращается 5 строк из 2 миллионов. Если я объявляю параметр, как это делается в .NET, в начале запроса в SSMS, это занимает целую вечность.

Это тот же запрос, но с параметрами.

Первый (который работает нормально):

;WITH Results_CTE AS (
    SELECT  ld.* , ROW_NUMBER() OVER (ORDER BY PK_ID) AS RowNum  
    FROM list..List_Data ld 
    WHERE Name IS NOT NULL  AND 
    Postcode LIKE 'SW14 1xx%' 
) SELECT * FROM Results_CTE 

Второй, который работает вечно:

declare @postcode varchar(10) = 'SW14 1xx'
;WITH Results_CTE AS (
    SELECT  ld.* , ROW_NUMBER() OVER (ORDER BY PK_ID) AS RowNum  
    FROM list..List_Data ld
    WHERE Name IS NOT NULL  AND 
    Postcode LIKE @postcode +'%' 
) SELECT * FROM Results_CTE 

Я полагаю, что это как-то связано с внутренним устройством SQL Server, но я понятия не имею.

5
задан Echilon 24 October 2011 в 10:14
поделиться