Portanto, tenho uma função que retorna uma série de registros para os quais desejo implementar paginação em meu site. Foi sugerido que eu usasse o Offset / Fetch Next no SQL Server 2012 para fazer isso. Em nosso site, temos uma área que lista o número total de registros e em que página você está no momento.
Antes, eu recebia todo o conjunto de registros e era capaz de construir a paginação programaticamente. Mas usando o método SQL com FETCH NEXT X ROWS APENAS, recebo apenas X linhas, então não sei qual é o meu conjunto de registros total e como calcular minhas páginas mínimas e máximas. A única maneira de saber fazer isso é chamar a função duas vezes e fazer uma contagem de linhas na primeira, depois executar a segunda com FETCH NEXT. Existe uma maneira melhor de não me fazer executar a consulta duas vezes? Estou tentando acelerar o desempenho, não diminuí-lo.
fonte
Eu encontrei alguns problemas de desempenho usando o método COUNT ( ) OVER (). (Não tenho certeza se era o servidor, pois demorou 40 segundos para retornar 10 registros e depois não teve nenhum problema.) Esta técnica funcionou em todas as condições sem ter que usar COUNT ( ) OVER () e cumpre o mesma coisa:
fonte
Com base na resposta de James Moberg :
Esta é uma alternativa de uso
Row_Number()
, se você não tem SQL server 2012 e não pode usar OFFSETfonte