ホームページ >データベース >mysql チュートリアル >LINQ の Skip() および Take() に相当する直接 SQL はありますか?
SQL でのスキップとテイク: LINQ と同等の
LINQ の .Skip() メソッドと .Take() メソッドは、便利な作業方法を提供します。メモリ内のデータのサブセットを使用します。ただし、基になるデータ ソースが大規模な SQL データベースである状況では、多くの場合、これらの操作をメモリ内ではなく SQL 内で直接実行することが望ましいとされます。これにより、大量のデータをメモリに転送するオーバーヘッドが回避されます。
そのようなシナリオの 1 つは、データベース テーブルから特定の範囲の行を選択する必要がある場合です。 LINQ には、この目的のために .Skip() メソッドと .Take() メソッドが用意されていますが、直接同等の SQL メソッドはありますか?
SQL Server 2012 以降
SQL Server 2012 以降では、行オフセットと制限:
OFFSET (@Skip) ROWS FETCH NEXT (@Take) ROWS ONLY
特定のテーブルから行 1000 ~ 1100 を選択するには、次のクエリを使用します:
SELECT * FROM Sales.SalesOrderHeader ORDER BY OrderDate OFFSET 1000 ROWS FETCH NEXT 100 ROWS ONLY
このクエリは次の手順を実行します:
このソリューションは、すべての行を選択する必要がなくなり、メモリ内で同じ操作を実行するよりもはるかに効率的です。最初の 1000 を破棄し、次の 100 を手動で選択します。
以上がLINQ の Skip() および Take() に相当する直接 SQL はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。