ページネーションとは

ページネーションは、大きなデータを個々のページの小さなデータ セットに分割するプロセスです。 Web アプリケーションで広く使用されています。

ページネーションは MS SQL Server でどのように機能しますか?

MS SQL Server、使用してページネーション機能を実現できます OFFSETFETCH ORDER BY を含む句 SELECT 陳述。

  • OFFSET: 結果セットからスキップされる行数を表します。 0 または 0 より大きい必要があります。
  • FETCH:結果に表示される行数を表します。

使用上の注意事項 OFFSETFETCH:

  • ORDER BY は使用に必須です OFFSET FETCH 句。
  • OFFSET 必須であり、 FETCH オプションです。
  • TOP 句は使用できません SELECT との陳述 OFFSET FETCH.

例を見てみましょう:

以下の例では、 OFFSET 0FETCH 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 3FETCH 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 これは、ページ番号 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

結論

リアルタイム アプリケーションでは、この完全なロジックをストアド プロシージャに記述することができます。ストアド プロシージャは、Web アプリケーションの[次へ]またはページ番号ボタンをクリックして呼び出され、ページに一連のレコードを表示します。

OFFSET と FETCH を使用した MS SQL Server のページネーション方法のすべて [Simple] 私が言及した方法はうまくいきました。 読んでいただきありがとうございます。この記事に関するご意見を以下にコメントして共有してください signalfix.net あなたの友人たちとともに。