НЕТ! Нет шансов!
Разница в другом месте!
Время, необходимое для составления плана запроса, составляет в лучшем случае порядка нескольких секунд (хуже).
По всей вероятности, разница обусловлена либо:
- кэшированные данные
- наличие / отсутствие блокировок от других запросов / процессов
- другой контекст данных при втором запуске запроса (ссылки на объекты SQL с меньшим количеством строк и т. Д.)
Упомянутая разница: 3 часа, до 1 минуты или около того, настолько радикальны, что я не думаю, что только кэшированные данные могут объяснить это .
Вот где поможет дополнительная информация о запросе ...
Например, и хотя этот запрос один и тот же выполнялся дважды, он может иметь другое поведение во второй раз (например, если это запрос типа update / insert / delete, он может не потребоваться изменить так много строк). Даже только запрос SELECT может выполняться иначе, потому что базовые данные были изменены (другими запросами / процессами).
Вот несколько предложений, чтобы узнать больше:
- проверить (статически) сам план выполнения. Посмотрите, есть ли там что-то такое, что может быть таким дорогим, как 3 часа.
- перезапустите запрос с «статистикой по» и очистив (или нет) кэши перед каждым запуском.
Заявления для очистки кэшей (могут быть другие способы сделать это с более новой версией SQL-Server):
dbcc freeproccache
go
dbcc dropcleanbuffers
go