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

Metody stronicowania SQL Server 2008?

Poniższa procedura składowana T-SQL jest bardzo sprawne wdrożenie stronicowania. Optymalizator SQL może bardzo szybko znaleźć pierwszy identyfikator. Połącz to z użyciem ROWCOUNT, a otrzymasz podejście, które jest wydajne zarówno dla procesora CPU, jak i dla odczytu. W przypadku tabeli z dużą liczbą wierszy z pewnością bije to na głowę każde podejście, które widziałem, wykorzystujące tabelę tymczasową lub zmienną tabeli.

Uwaga:w tym przykładzie używam kolumny tożsamości sekwencyjnej, ale kod działa na dowolnej kolumnie odpowiedniej do sortowania stron. Ponadto podziały sekwencji w używanej kolumnie nie wpływają na wynik, ponieważ kod wybiera liczbę wierszy, a nie wartość kolumny.

EDYCJA:Jeśli sortujesz według kolumny z potencjalnie nieunikalnymi wartościami (np. LastName), dodaj drugą kolumnę do klauzuli Order By, aby ponownie wartości sortowania były unikatowe.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. czy istnieje przewaga varchar(500) nad varchar(8000)?

  2. SQL Server 2016 — wprowadzenie do bazy danych Stretch

  3. Dopasowywanie rozmyte SQL

  4. Jak zmienić domyślny profil poczty bazy danych dla użytkownika w programie SQL Server (T-SQL)

  5. Nowe wydanie:pakiet dostrajania Spotlight 7.1.9