ホームページ >データベース >mysql チュートリアル >SQL Server で行オフセットを効率的に実装するにはどうすればよいですか?

SQL Server で行オフセットを効率的に実装するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-19 21:31:11823ブラウズ

How to Efficiently Implement Row Offsets in SQL Server?

SQL Server の行のオフセット

標準 SQL 構文は、指定されたオフセットから開始する結果の取得を直接サポートしていません。 OFFSET 句を提供する他のデータベース システムとは異なり、SQL Server では、不要な行を抽出せずに同様の機能を実現するには、別のアプローチが必要です。

SQL Server 2005 以降

2005 以降では、ROW_NUMBER() 関数を派生テーブルおよび WHERE 句と組み合わせて使用​​して、結果を効率的にオフセットできます。例は次のとおりです:

<code class="language-sql">SELECT col1, col2 
FROM (
    SELECT col1, col2, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum
    FROM MyTable
) AS MyDerivedTable
WHERE MyDerivedTable.RowNum BETWEEN @startRow AND @endRow</code>

このクエリでは、ROW_NUMBER() 関数が ID 列に基づいて各行にシーケンス番号を割り当て、正しい並べ替えを保証します。

SQL Server 2000

SQL Server 2000 の場合は、次のような他のテクノロジを検討できます。

  • SQL Server 2000 での大規模な結果セットの効率的なページング: この記事では、ストアド プロシージャを使用して行オフセットを実装する方法を説明します。
  • 大規模な結果セットをページ分割するより効率的な方法: このブログ投稿では、SQL Server 2005 の方法と同様に、ROW_NUMBER() 関数とサブクエリを使用したソリューションを提供します。

以上がSQL Server で行オフセットを効率的に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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