ホームページ >データベース >mysql チュートリアル >SQL Server におけるキーセットのページネーションと OFFSET: より効率的なアプローチ?

SQL Server におけるキーセットのページネーションと OFFSET: より効率的なアプローチ?

DDD
DDDオリジナル
2025-01-16 11:01:57163ブラウズ

Keyset Pagination vs. OFFSET in SQL Server:  A More Efficient Approach?

SQL Server ページングのより効率的なソリューション: キーセット ページング

SQL Server では、通常、ページングは​​ OFFSET を使用して実装されますが、大きなテーブルの場合は、キーセット ページングの方が効率的な方法です。目的のページに到達するために以前のすべての行を読み取る必要がある行セットのページネーションとは異なり、キーセットのページネーションはインデックス内の正しい位置に直接ジャンプするため、パフォーマンスが大幅に向上します。

キーセット ページングを実装するには、必要なキーに一意のインデックスを作成する必要があります。キーには、クエリで必要な追加の列を含めることができます。このメソッドでは、特定のページ番号に直接ジャンプできないことに注意してください。代わりに、最初に特定のキーを見つけてから、そこから先に進む必要があります。

キーセット ページングの利点の 1 つは、行セット ページングでの行の削除によって発生する「行の損失」問題を回避できることです。ページングは​​キーに基づいているため、行の順序が変更されてもページング ロジックには影響しません。

次に、SQL Server でのキーセット ページネーションの使用例を示します。

<code class="language-sql">SELECT TOP (@numRows)
  *
FROM TableName
ORDER BY Id DESC;</code>

このクエリは、ID 列の降順でデータの最初のページを取得します。さらにページ分割するには、次のように最後に受信した ID 値を使用できます:

<code class="language-sql">SELECT TOP (@numRows)
  *
FROM TableName
WHERE Id < @lastId
ORDER BY Id DESC;</code>

一意でない列によるページングをサポートするには、ORDER BY 句と WHERE 句の両方に追加の列を含める必要があります。効率的に実行するには、選択した列に適切なインデックスを構築する必要があります。

キーセット ページングは​​、SQL Server の大規模なデータ セットに対して OFFSET ページングのより効率的な代替手段を提供します。これにより、不必要な行の読み取りが回避され、データが変更された場合でも一貫したページ分割された結果が保証されます。

以上がSQL Server におけるキーセットのページネーションと OFFSET: より効率的なアプローチ?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。