У меня есть запрос, который работает с довольно большой таблицей, мне нужно подсчитать его.
Если я использую литерал, запрос выполняется за несколько секунд, но когда я помещаю значения в качестве переменных (что мне нужно сделать), запрос занимает вечность и, по-видимому, выполняет полное сканирование таблицы.
Я довольно много читал об этом, и я понимаю, что это, скорее всего, связано с обнюхиванием параметров, что я не могу притворяться, что понимаю это, я просто хочу знать, как я могу это исправить, иначе я придется вернуться к вызову его в С# со сгенерированными строками запроса.
Этот запрос выполняется через несколько секунд.
SELECT Count(Id) FROM dbo.BeaconScan WHERE State = 'Archived' AND LastSeen < '29 February 2020';
Это занимает вечность
DECLARE @Date DATE = '31 March 2020'
DECLARE @Status NVARCHAR(256) = 'Archived'
SELECT Count(Id) FROM dbo.BeaconScan WHERE State = @Status AND LastSeen < @Date;