ホームページ >データベース >mysql チュートリアル >OFFSET と FETCH を使用して SQL Server でページネーションを実装するにはどうすればよいですか?

OFFSET と FETCH を使用して SQL Server でページネーションを実装するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-18 18:26:16696ブラウズ

How to Implement Pagination in SQL Server Using OFFSET and FETCH?

OFFSET と FETCH を使用して SQL Server にページングを実装する

SQL Server には、MySQL や SQL の LIMIT 句に直接相当するものはありません。ただし、OFFSET 句と FETCH 句を使用して同様の機能を実現する別の方法が提供されます。

オフセットとフェッチ

OFFSETFETCH を使用してページネーションを実装するには、次の手順に従います。

  1. データの並べ替え: ORDER BY 句を使用して、データを希望の順序で並べ替えます。
  2. OFFSET を使用して行をスキップする: OFFSET 句は、結果セットの先頭でスキップする行数を指定します。
  3. FETCH を使用して行数を制限する: FETCH 句は、オフセット行をスキップした後に返される行数を指定します。

例:

<code class="language-sql">SELECT *
FROM sys.databases
ORDER BY name
OFFSET 5 ROWS
FETCH NEXT 5 ROWS ONLY;</code>

このクエリは、最初の 5 行 (OFFSET 5 ROWS) をスキップし、次の 5 行 (FETCH NEXT 5 ROWS ONLY) を返します。

古い SQL Server バージョンの代替:

2012 より前の SQL Server バージョンの場合、効率性の低い代替手段が存在します。

  • TOP と ORDER BY を使用します: これは混乱を招く可能性があり、インデックスを使用するときにページネーションを正しく処理できない可能性があります。
  • ROW_NUMBER() と WHERE の使用: これには、行番号列を持つ一時テーブルの作成と、行番号に基づいたフィルター処理が含まれます。

LIMIT を逃した理由

LIMIT 句は、主に歴史的およびアーキテクチャ上の理由から SQL Server にありません。 Microsoft は、高いパフォーマンスとデータの整合性を重視して SQL Server を設計しており、OFFSET および FETCH メカニズムはページングにとってより効率的で多用途であると考えられています。ただし、最近のバージョンでは SQL Server が更新され、ROW_NUMBER() およびその他の最適化が組み込まれ、OFFSETFETCHLIMIT とより同等になりました。

以上がOFFSET と FETCH を使用して SQL Server でページネーションを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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