sql >> Databáze >  >> RDS >> Sqlserver

Nejlepší řešení stránkování pomocí SQL Server 2005?

Pro tabulku této velikosti použijte Common-Table Expression (CTE) a ROW_NUMBER; použijte malou funkci k výpočtu záznamů, které se mají vrátit, na základě @PageNumber a @PageSize proměnné (nebo jak je nazvat). Jednoduchý příklad z jedné z našich uložených procedur:

-- 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. Jak Floor() funguje v PostgreSQL

  2. Porovnání Percona XtraBackup a MySQL Enterprise Backup:Část první

  3. nechtěné úvodní prázdné místo ve formátu čísel Oracle

  4. Javascript date to sql date objekt