Я пытаюсь разбить записи на страницы по 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 записей за раз.
Вышеуказанный метод также включает дополнительный столбец (для него требуется первичный ключ). Я тоже хочу избавиться от этой колонки!
Кроме того, поскольку мне нужно отображать номера страниц (вкладки нумерации страниц), я хочу заранее подсчитать общее количество записей.
Спасибо!
Научитесь использовать LINQ. Очень эффективный.
редактировать
Ну тогда.
SELECT *
FROM etc
WHERE Row_Number() BETWEEN '".$startLimit."' AND '".$endLimit."'
Может работать на тебя. Не забудьте экранировать переменные, чтобы ни один опасный код не мог пройти мимо.
Других решений пока нет …