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

Cách tốt nhất để thực hiện phân trang trên SQL Server là gì?

ALTER PROCEDURE [dbo].[SP_tblTest_SelectSpecificRecordsWithCTE]
    @FromRow int = 1000000,
    @PgSize int = 10
AS
BEGIN
    ;WITH RecordsRN AS
    (
        select ID, colValue, ROW_NUMBER() over(order by colvalue) as Num from tblTest
    )
    SELECT ID Value, colValue Text FROM RecordsRN WHERE Num between @FromRow AND (@[email protected])
END

đó là truy vấn tôi đang sử dụng để phân trang. sử dụng nó và bạn sẽ nhận được 10 bản ghi mong muốn trong 4-5 giây. Tôi nhận được 10 bản ghi trong 3 giây và tổng số bản ghi trong db của tôi là 10 triệu bản, không sử dụng top 10 nó sẽ chỉ mang lại 10 bản ghi mỗi lần. trong trường hợp của tôi, tôi đang duy trì kích thước trang và số hàng bắt đầu (@FromRow) trong phiên và tôi chuyển hai giá trị này vào thủ tục lưu trữ đã cho bên dưới và nhận kết quả. Ngoài ra, nếu bạn đang sử dụng SQL 2012, bạn có thể muốn sử dụng OFFSET và Tìm nạp 10 hàng tiếp theo. tìm kiếm trên google về từ khóa OFFSET và bạn sẽ thấy kết quả mong muốn của mình ở trên cùng.

cảm ơn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có cần khôi phục lại nếu truy vấn được hoàn thành với lỗi không?

  2. 6 Truy vấn sự cố làm chậm cơ sở dữ liệu của bạn

  3. CẤP THỰC HIỆN cho tất cả các thủ tục được lưu trữ

  4. Xóa tất cả dữ liệu trong cơ sở dữ liệu SQL Server

  5. Hợp nhất hai phân vùng thành một trong SQL Server (T-SQL)