Пожалуйста, рассмотрите этот запрос:
SELECT num,
*
FROM (
SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate,
ShippedDate,
ROW_NUMBER()
OVER(ORDER BY OrderID) AS num
FROM Orders
) AS numbered
WHERE NUM BETWEEN 0AND 100
когда я выполняю этот запрос и получаю план выполнения, это выглядит так:
Я хочу знать
1) Какие шаги SQL Server 2008 проходит для добавления ROW_NUMBER()
в запрос?
2) Почему на первом шаге в плане выполнения у нас есть Clustered Index Scan
?
3) Почему стоимость фильтрации составляет 2%? Я имею в виду, почему для получения соответствующих данных сервер SQL не выполняет сканирование таблицы? ROW_NUMBER()
вызывает создание индекса?