Огромная разница в производительности SQL при использовании SELECT TOP x, даже если x намного выше выбранных строк

Я выбрал несколько строк из табличной функции, но обнаружил необъяснимую огромную разницу в производительности, поставив SELECT TOP в запросе.

SELECT   col1, col2, col3 etc
FROM     dbo.some_table_function
WHERE    col1 = @parameter
--ORDER BY col1

занимает более 5 или 6 минут, чтобы завершить.

тем не мение

SELECT   TOP 6000 col1, col2, col3 etc
FROM     dbo.some_table_function
WHERE    col1 = @parameter
--ORDER BY col1

завершается примерно за 4 или 5 секунд.

Это быменя не удивит, если возвращенный набор данных будет огромным,но конкретный запрос возвращает ~ 5000 строк из 200 000

Таким образом, в обоих случаях вся таблица обрабатывается, поскольку SQL Server продолжает поиск до 6000 строк, до которых он никогда не доберется. Почему тогда огромная разница? Это как-то связано с тем, как SQL Server выделяет пространство в ожидании размера набора результатов (тем самым TOP 6000 предъявляет к нему низкие требования, которые легче распределяются в памяти)? Кто-нибудь еще был свидетелем чего-то подобного?

Спасибо

Ответы на вопрос(6)

Ваш ответ на вопрос