Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Методи за пейджинг на SQL Server 2008?

Следващата T-SQL съхранена процедура е много ефективно изпълнение на пейджинг. SQL оптимизаторът може да намери първия идентификатор много бързо. Комбинирайте това с използването на ROWCOUNT и имате подход, който е едновременно ефективен за процесора и четене. За таблица с голям брой редове това със сигурност надминава всеки подход, който съм виждал, използвайки временна таблица или таблична променлива.

NB:Използвам колона с последователна идентичност в този пример, но кодът работи на всяка колона, подходяща за сортиране на страници. Освен това прекъсванията на последователността в използваната колона не влияят на резултата, тъй като кодът избира брой редове, а не стойност на колона.

РЕДАКТИРАНЕ:Ако сортирате по колона с потенциално неуникални стойности (напр. фамилно име), тогава добавете втора колона към клаузата Order By, за да направите стойностите за сортиране отново уникални.

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. Колоните за дата в SQL-Server (MSSQL-JDBC 3.0), работещи под Java 1.7.0, извлечени като 2 дни в миналото

  2. SQL Server - дефиниране на колона от тип XML с UTF-8 кодиране

  3. LEN() срещу DATALENGTH() в SQL Server

  4. Импортирайте 'xml' в Sql сървър

  5. Обяснение на НЯКОИ оператор на SQL Server