Нумерация записей с MSSQL 2005

Я пытаюсь разбить записи на страницы по 10 страниц (используя PHP AJAX на MSSQL Server 2005). (Я передаю SQL как строки PHP на сервер MSSQL)
Я хочу отображать кнопку для каждой страницы (например, если имеется 45 записей, я хочу отобразить 5 кнопок, каждая из которых выбирает 10 записей).
Я наткнулся на этот код

SELECT  *
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY OrderDate ) AS RowNum, *
FROM      Orders
WHERE     OrderDate >= '1980-01-01'
) AS RowConstrainedResult
WHERE   RowNum >= 1
AND RowNum <= 10
ORDER BY RowNum

Но это крайне неэффективно, потому что сначала получается целая база данных, а затем из нее каждый раз выбирается 10 строк.
Может ли кто-нибудь предложить какой-нибудь метод (который работает с MSSQL server 2005), который выбирает только 10 строк за раз, а не все 100 записей за раз.
Вышеуказанный метод также включает дополнительный столбец (для него требуется первичный ключ). Я тоже хочу избавиться от этой колонки!

Кроме того, поскольку мне нужно отображать номера страниц (вкладки нумерации страниц), я хочу заранее подсчитать общее количество записей.

Спасибо!

1

Решение

Научитесь использовать LINQ. Очень эффективный.

редактировать
Ну тогда.

SELECT *
FROM etc
WHERE Row_Number() BETWEEN '".$startLimit."' AND '".$endLimit."'

Может работать на тебя. Не забудьте экранировать переменные, чтобы ни один опасный код не мог пройти мимо.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]