Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Pobieranie całkowitej liczby wierszy z OFFSET / FETCH NEXT

Podczas korzystania z metody COUNT() OVER() napotkałem pewne problemy z wydajnością. (Nie jestem pewien, czy był to serwer, ponieważ zwrócenie 10 rekordów zajęło 40 sekund, a później nie wystąpiły żadne problemy). Ta technika działała we wszystkich warunkach bez konieczności używania funkcji LICZBA ( ) OVER() i osiąga to samo:

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. Agregat może nie pojawić się na liście zestawów instrukcji UPDATE

  2. Wyraźny błąd w polu obrazu

  3. Jak wstawić znaki arabskie do bazy danych SQL?

  4. Jak połączyć te dwie rzeczy razem? Varchar guid i guid wpisują oba klucze podstawowe

  5. Co to jest „identyfikator wieloczęściowy” i dlaczego nie można go powiązać?