Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Najlepsze rozwiązanie do stronicowania przy użyciu SQL Server 2005?

W przypadku tabeli o takim rozmiarze użyj wyrażenia Common-Table Expression (CTE) i ROW_NUMBER; użyj małej funkcji do obliczenia rekordów do przywrócenia na podstawie @PageNumber i @PageSize zmienne (lub jakkolwiek chcesz je nazwać). Prosty przykład z jednej z naszych procedur składowanych:

-- 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zrozumieć typ danych geograficznych serwera SQL?

  2. Jak dodać grupę plików do bazy danych programu SQL Server (T-SQL)

  3. Jak mogę WYBRAĆ wiele kolumn w ramach przypadku, gdy na serwerze SQL Server?

  4. Jak sprawdzić, czy baza danych istnieje w SQL Server?

  5. Określ rozmiar wiersza dla tabeli