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

Получаване на общ брой редове от OFFSET / FETCH NEXT

Срещнах някои проблеми с производителността, използвайки метода COUNT() OVER(). (Не съм сигурен дали беше сървърът, тъй като бяха необходими 40 секунди, за да се върнат 10 записа и след това нямаше никакви проблеми.) Тази техника работи при всякакви условия, без да се налага да използва COUNT( ) OVER() и постига същото нещо:

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. Присъединяването на множество таблици връща стойност NULL

  2. Конкатенация на редове с FOR XML, но с множество колони?

  3. Скриване на бази данни за влизане в Microsoft Sql Server 2008R2 и по-нова версия

  4. w3wp.exe висока мрежа при извикване на база данни

  5. TSQL:Опитайте-уловете транзакция в Trigger