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

SQL Server 2005を使用した最適なページングソリューション?

    そのサイズのテーブルには、共通テーブル式(CTE)とROW_NUMBERを使用します。小さな関数を使用して、@PageNumberに基づいて戻すレコードを計算します および@PageSize 変数(またはそれらを呼び出したいもの)。ストアドプロシージャの1つからの簡単な例:

    -- calculate the record numbers that we need
    
    DECLARE @FirstRow INT, @LastRow INT
    SELECT  @FirstRow   = ((@PageNumber - 1) * @PageSize) + 1,
            @LastRow    = ((@PageNumber - 1) * @PageSize) + @PageSize
    
    ;
    WITH CTE AS
    (
        SELECT [Fields]
               , ROW_NUMBER() OVER (ORDER BY [Field] [ASC|DESC]) as RowNumber 
        FROM [Tables]
        WHERE [Conditions, etc]
    )
    SELECT * 
           -- get the total records so the web layer can work out
           -- how many pages there are
           , (SELECT COUNT(*) FROM CTE) AS TotalRecords
    FROM CTE
    WHERE RowNumber BETWEEN @FirstRow AND @LastRow
    ORDER BY RowNumber ASC
    


    1. MariaDB CURRENT_TIMESTAMP()の説明

    2. SQLServerでSELECTからUPDATEを使用する方法

    3. SQLServerで現在使用されている言語を取得する

    4. 12一般的に使用されるSQL演算子