Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Giải pháp phân trang tốt nhất sử dụng SQL Server 2005?

Đối với một bảng có kích thước như vậy, hãy sử dụng Biểu thức bảng chung (CTE) và ROW_NUMBER; sử dụng một hàm nhỏ để tính toán các bản ghi để trả về dựa trên @PageNumber@PageSize các biến (hoặc bất cứ thứ gì bạn muốn gọi chúng). Ví dụ đơn giản từ một trong các thủ tục được lưu trữ của chúng tôi:

-- 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. Sự khác biệt giữa VARCHAR và NVARCHAR trong máy chủ SQL - Hướng dẫn SQL Server / T-SQL Phần 32

  2. Giới thiệu về Bảo mật cấp hàng trong SQL Server

  3. Nhóm theo cột và nhiều hàng thành một hàng nhiều cột

  4. Cách sử dụng thủ tục lưu trữ ‘sp_server_info’ trong SQL Server

  5. Cách tắt CDC trên tập hợp bảng HOẶC tắt trên tất cả bảng trong cơ sở dữ liệu trong SQL Server - Hướng dẫn sử dụng SQL Server