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

Nhận tổng số hàng từ OFFSET / FETCH NEXT

Tôi đã gặp một số vấn đề về hiệu suất khi sử dụng phương thức COUNT () OVER (). (Tôi không chắc đó có phải là máy chủ hay không vì mất 40 giây để trả về 10 bản ghi và sau đó không gặp bất kỳ sự cố nào.) Kỹ thuật này hoạt động trong mọi điều kiện mà không cần phải sử dụng COUNT ( ) OVER () và hoàn thành điều tương tự:

DECLARE 
    @PageSize INT = 10, 
    @PageNum  INT = 1;

WITH TempResult AS(
    SELECT ID, Name
    FROM Table
), TempCount AS (
    SELECT COUNT(*) AS MaxRows FROM TempResult
)
SELECT *
FROM TempResult, TempCount
ORDER BY TempResult.Name
    OFFSET (@PageNum-1)*@PageSize ROWS
    FETCH NEXT @PageSize ROWS ONLY


  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ách tạo Menu phân cấp từ bảng khác nhau dựa trên cấu trúc cơ sở dữ liệu mẫu

  2. Sử dụng nhiều từ trong chuỗi nhập FullText Search

  3. Đếm các bản ghi cho mỗi tháng trong một năm

  4. Câu trả lời nhiều lựa chọn Truy vấn T-SQL

  5. Cách trả lại tất cả các ràng buộc kiểm tra không đáng tin cậy trong SQL Server (Ví dụ T-SQL)