Что такое пагинация?

Разбиение на страницы — это процесс разделения больших данных на более мелкие наборы данных на отдельных страницах. Он широко используется в веб-приложениях.

Как работает нумерация страниц в MS SQL Server?

В MS SQL Serverмы можем добиться функциональности разбиения на страницы, используя OFFSET а также FETCH предложения с ORDER BY в SELECT Залог.

  • OFFSET: представляет количество строк, которые необходимо пропустить из набора результатов. Должно быть 0 или больше 0.
  • FETCH: представляет количество строк, отображаемых в результате.

Важные моменты, которые следует учитывать при использовании OFFSET а также FETCH:

  • ORDER BY является обязательным для использования OFFSET FETCH Пункт.
  • OFFSET является обязательным и FETCH является необязательным.
  • TOP оговорка не может быть использована в SELECT связь с OFFSET FETCH.

Давайте посмотрим примеры:

В приведенном ниже примере OFFSET 0 а также FETCH NEXT 5 ROWS не пропускать строки и возвращать следующие 5 строк в наборе данных, которые являются первыми 5 строками в наборе данных.

SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey 
OFFSET 0 ROWS
FETCH NEXT 5 ROWS ONLY

OFFSET 0 и FETCH NEXT 5 ROWS

В приведенном ниже примере OFFSET 3 а также FETCH NEXT 5 ROWS означает пропустить первые 3 строки и вернуть следующие 5 строк в наборе данных.

SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey 
OFFSET 3 ROWS
FETCH NEXT 5 ROWS ONLY

OFFSET 3 и FETCH NEXT 5 ROWSPageNumberRowsOfPage

  • PageNumber — Представляет номер страницы
  • RowsOfPage — Представляет количество строк на странице.

Теперь, чтобы рассчитать количество строк, которые будут пропущены при переходе к формуле следующей страницы(@PageNumber-1) * @RowsOfPage используется в OFFSETи количество строк будет возвращено в FETCH.

Здесь, PageNumber равно 2 и RowsOfPage равно 5, что означает возврат набора данных для страницы номер 2.

DECLARE @PageNumber AS INT
       ,@RowsOfPage AS INT

SET @PageNumber=2
SET @RowsOfPage=5

SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey
OFFSET (@PageNumber-1) * @RowsOfPage ROWS
FETCH NEXT @RowsOfPage ROWS ONLY

OFFSET (@PageNumber-1) * @ RowsofPage и FETCH NEXT @RowsOfPage ROWS

Вывод

В приложении реального времени эта полная логика может быть записана в хранимой процедуре, которая вызывается при нажатии кнопки «Далее» или кнопки номера страницы в веб-приложении для отображения набора записей на странице.

Все способы разбивки на страницы в MS SQL Server с использованием OFFSET и FETCH [Simple] методы, которые я упомянул, работали нормально. Спасибо за чтение и, пожалуйста, прокомментируйте ниже свои мысли об этой статье и поделитесь signalfix.net с друзьями.