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

OFFSET / FETCH NEXT から総行数を取得する

    COUNT() OVER() メソッドを使用すると、パフォーマンスの問題が発生しました。 (10 レコードを返すのに 40 秒かかり、その後は問題が発生しなかったため、サーバーが原因かどうかはわかりません。) この手法は、COUNT( を使用する必要なく、すべての条件下で機能しました。 ) OVER() と同じことを達成します:

    DECLARE 
        @PageSize INT = 10, 
        @PageNum  INT = 1;
    
    WITH TempResult AS(
        SELECT ID, Name
        FROM Table
    ), TempCount AS (
        SELECT COUNT(*) AS MaxRows FROM TempResult
    )
    SELECT *
    FROM TempResult, TempCount
    ORDER BY TempResult.Name
        OFFSET (@PageNum-1)*@PageSize ROWS
        FETCH NEXT @PageSize ROWS ONLY
    


    1. サブストリングを含むSELECTMySQLフィールド

    2. JDBC接続がハングし、SQL Server2008r2からの応答がありません

    3. Doctrine Paginatorはテーブル全体を選択します(非常に遅い)?

    4. 古いmysqlデータフォルダをインポートする