Существует множество методов пейджингового запроса, и я присоединюсь к ним здесь.
В SQL Server есть параметр Set Rowcount, который означает, что обработка команды прекращается после ответа на указанное количество строк. Используя эту функцию, мы можем использовать ее для достижения высокой производительности на уровне десятков миллионов строк. таблица данных производительности запросов с разбиением на страницы. Давайте сначала поговорим о методе реализации:
1. Предположим, что в таблице есть идентификатор поля первичного ключа (целочисленный тип). Мы будем извлекать данные для подкачки в соответствии с этим полем.
2. Задаем размер страницы в @PageSize
3. Ставим номер текущей страницы в @CurrentPage
4. Как быстро прокрутить указатель записи до строки в начале данных, которые мы хотим получить. Это ключ! С помощью Set RowCount мы можем легко это реализовать.
5. Если мы успешно прокрутим указатель записи до строки в начале данных, которые хотим получить, а затем запишем значение поля ID записи в этой строке, то, используя Top и условия, мы можем легко получить указанную страницу данных. Конечно, с помощью Set RowCount мы по-прежнему будем использовать Top?
Давайте посмотрим, как нам может помочь Set Rowcount:
Объявить @ID int
Объявите @MoveRecords int
--@CurrentPage и @PageSize как входящие параметры.
Set @MoveRecords=@CurrentPage * @PageSize+1
— следующие две строки позволяют быстро прокручивать строку данных, которые мы хотим получить, и записывать идентификатор.
Установить количество строк @MoveRecords
Выберите @ID=ID из таблицы 1. Упорядочить по идентификатору.
Установить количество строк @PageSize.
--Я ненавижу использовать *, чтобы избежать проблем, но для удобства объяснения я буду использовать его временно.
Выберите * Из таблицы 1, где ID>=@ID Упорядочить по идентификатору
Установить количество строк 0
Вы можете попробовать. В таблице с записями мощностью 1000 Вт вы можете быстро перевернуть страницу на 100 (100 записей на странице) и посмотреть, насколько это быстро!
Источник: БЛОГ Наньфэн
http://name-lh.cnblogs.com/archive/2006/03/08/346059.html