sql >> Databáze >  >> RDS >> Sqlserver

Získání celkového počtu řádků z OFFSET / FETCH NEXT

Při použití metody COUNT() OVER() jsem narazil na nějaké problémy s výkonem. (Nejsem si jistý, jestli to byl server, protože vrácení 10 záznamů trvalo 40 sekund a později už nebyly žádné problémy.) Tato technika fungovala za všech podmínek, aniž by bylo nutné použít COUNT( ) OVER() a provede stejnou věc:

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. Předvyplněná databáze nefunguje v rozhraní API 28 nevyvolává žádnou takovou výjimku tabulky

  2. ORA-01008:nejsou svázány všechny proměnné, když jsou všechny svázány

  3. Extrahování času pro opětovné připojení

  4. Jak mohu vložit více řádků do oracle s hodnotou sekvence?