Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Metode paging SQL Server 2008?

Prosedur tersimpan T-SQL berikut adalah sangat implementasi paging yang efisien. Pengoptimal SQL dapat menemukan ID pertama dengan sangat cepat. Kombinasikan ini dengan penggunaan ROWCOUNT, dan Anda memiliki pendekatan yang hemat CPU dan efisien baca. Untuk tabel dengan jumlah baris yang banyak, ini pasti mengalahkan pendekatan apa pun yang pernah saya lihat menggunakan tabel sementara atau variabel tabel.

NB:Saya menggunakan kolom identitas sekuensial dalam contoh ini, tetapi kode berfungsi pada kolom apa pun yang cocok untuk penyortiran halaman. Selain itu, jeda urutan dalam kolom yang digunakan tidak memengaruhi hasil karena kode memilih sejumlah baris daripada nilai kolom.

EDIT:Jika Anda mengurutkan pada kolom dengan nilai yang berpotensi tidak unik (mis. LastName), tambahkan kolom kedua ke klausa Order By untuk membuat nilai pengurutan menjadi unik lagi.

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. Bagaimana cara mencari string di database SQL Server?

  2. Konversi 'smalldatetime' menjadi 'datetime' di SQL Server (Contoh T-SQL)

  3. SqlServer:Login gagal untuk pengguna

  4. Cara Mengembalikan Kepercayaan dalam Batasan Kunci Asing di SQL Server (Contoh T-SQL)

  5. Cara Memulihkan Data dari File Log Transaksi SQL Server