SQL Server 2008 のページング手法
膨大なデータセットを扱う場合、リスト全体を一度に取得しないようにすることが重要になります。このニーズに応えるために、SQL Server 2008 では、ユーザーが一度に限られた数のレコード (ページ) を表示できるようにするいくつかのページング メソッドが提供されています。
1 つのアプローチには、各レコードに行番号を追加し、それに基づいてクエリを実行することが含まれます。その行番号。ただし、この方法では追加のオーバーヘッドが発生する可能性があります。
より効率的な解決策は、以下に示すような SQL 最適化を備えたストアド プロシージャを活用することです。
CREATE PROCEDURE dbo.PagingTest ( @PageNumber int, @PageSize int ) AS DECLARE @FirstId int, @FirstRow int SET @FirstRow = ( (@PageNumber - 1) * @PageSize ) + 1 SET ROWCOUNT @FirstRow -- Add check here to ensure that @FirstRow is not -- greater than the number of rows in the table. SELECT @FirstId = [Id] FROM dbo.TestTable ORDER BY [Id] SET ROWCOUNT @PageSize SELECT * FROM dbo.TestTable WHERE [Id] >= @FirstId ORDER BY [Id] SET ROWCOUNT 0 GO
このストアド プロシージャはシーケンシャル メソッドを利用します。 ID 列、またはページの並べ替えに適した任意の列。これは、目的のページの最初の ID を識別し、ROWCOUNT を使用して必要な数の行のみを取得します。このアプローチにより、CPU と読み取りのオーバーヘッドの両方が最小限に抑えられ、大規模なデータセットに最適なソリューションになります。
このストアド プロシージャを採用することで、開発者はページング機能を効率的に実装でき、ユーザーは広範なレコードのリストを簡単にナビゲートできるようになります。パフォーマンスが損なわれます。
以上がSQL Server 2008 ストアド プロシージャは大規模なデータセットのページングをどのように最適化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。