У меня есть таблица с примерно 1,5 миллионами строк с date_run индексируется без кластера. Запрос № 1 занимает 0 секунд, а запрос № 2 занимает 3 секунды. Может кто-нибудь объяснить, почему запрос №2 работает медленнее. Я также включил планы выполнения для обоих. Sql сервер версии 2014.Почему выбор даты медленный
запрос # 1
select avg14gain
from stocktrack
where
date_run >= '2013-3-21'
and date_run < '2013-3-22'
Valid XHTML http://biginkz.com/Pics/DateHardCoded.jpg.
запрос # 2
declare @today date
declare @yesterday date
set @today='2013-3-22'
set @yesterday='2013-3-21'
select avg14gain
from stocktrack
where
date_run >= @yesterday
and b.date_run <@today
Valid XHTML http://biginkz.com/Pics/DataAsigned.jpg.
Что 'b' в' b.date_run'? –
Запрос 1 выполняет поиск индекса, запрос 2 выполняет сканирование таблицы. Это означает, что второй запрос должен читать каждую строку в таблице, а первый запрос - только чтение строк из индекса. –
Да, но почему это делает сканирование таблицы? date_run индексируется. Эти два запроса практически одинаковы, за исключением того, что # 1 - это дата с жесткой привязкой и # 2. – user3690095