ВЫБОР производительности n-го числа?

Всем привет, я использую пользовательское разбиение на страницы и получаю данные с этим запросом.

DECLARE @pageIndex INT = 0;
DECLARE @pageSize INT = 10;
WITH foo AS (
    SELECT ROW_NUMBER() OVER (ORDER BY test ASC) as rownumber, test, col
    FROM TestDB.dbo.test
)
SELECT test, col FROM foo
WHERE rownumber BETWEEN (@pageIndex * @pageSize) + 1 AND (@pageIndex * @pageSize) + @pageSize

Он работает как надо, но я должен учитывать производительность, вот в чем вопрос.
Какой способ лучше для производительности SQL Server?
Выбор целых данных в таблице, а затем пейджинг в asp.net, php и т. Д. ИЛИ выбор данных с помощью метода, который я описал выше.
Я немного запутался, потому что описанный выше метод заключается в выборе целых данных и присвоении каждой строки номера строки, а затем в выборе строк, номер строки которых находится между X и Y.

0
задан pkk 14 August 2011 в 13:45
поделиться