sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2008のページング方法?

    次のT-SQLストアドプロシージャは非常にです ページングの効率的な実装。 SQLオプティマイザーは、最初のIDを非常に高速に見つけることができます。これをROWCOUNTの使用と組み合わせると、CPU効率と読み取り効率の両方を備えたアプローチが得られます。行数が多いテーブルの場合、一時テーブルまたはテーブル変数を使用して見たどのアプローチよりも確実に優れています。

    注意:この例ではシーケンシャルID列を使用していますが、コードはページの並べ替えに適した任意の列で機能します。また、コードは列の値ではなく行の数を選択するため、使用されている列のシーケンスの区切りは結果に影響しません。

    編集:一意でない可能性のある値(LastNameなど)を含む列で並べ替える場合は、2番目の列をOrder By句に追加して、並べ替え値を再度一意にします。

    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 
    


    1. クラウドテクノロジーに関する4つの一般的な神話

    2. Oracleの日付から先行ゼロを削除する方法

    3. MS Accessの破損パート2:予防と回復のためのベストプラクティス

    4. MySQLで破損したInnoDBテーブルを修復するための最良の方法