Um cenário que precisa ter performance dentro de uma T-SQL ...

Próximas questões
Com base no mesmo assunto
Q2398021 Banco de Dados
Um cenário que precisa ter performance dentro de uma T-SQL e adota o conceito de paginação apresenta a(s) seguinte(s) função(ões) executada(s) para compor a montagem de um SELECT:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: B - OFFSET, FETCH NEXT, ROWS ONLY

Para compreender por que a alternativa B está correta, é essencial entender o conceito de paginação em consultas SQL, uma técnica comum quando se lida com grandes volumes de dados. A paginação tem como objetivo dividir o resultado de uma consulta em "páginas" de dados, permitindo que o usuário visualize uma quantidade limitada e manejável de registros por vez. Isso é particularmente útil em aplicações web e móveis, onde o carregamento de muitos dados de uma vez pode ser prejudicial à performance e à experiência do usuário.

O T-SQL, ou Transact-SQL, é a extensão proprietária da Microsoft para o SQL que é usada no Microsoft SQL Server. As cláusulas OFFSET e FETCH NEXT são usadas juntas no T-SQL para implementar a paginação de uma maneira eficiente. A cláusula OFFSET especifica a partir de qual linha começar a retornar os dados, enquanto a cláusula FETCH NEXT indica o número de linhas a retornar após o OFFSET. A cláusula ROWS ONLY é usada para definir o fim do conjunto de resultados da paginação. Ao usar essas cláusulas em conjunto, é possível criar uma consulta paginada que retorna apenas um subconjunto específico de registros.

Veja um exemplo de uso abaixo:


SELECT * FROM Tabela
ORDER BY Coluna
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

Este comando irá pular os primeiros 10 registros (devido ao OFFSET 10 ROWS) e pegar os próximos 10 registros (por causa do FETCH NEXT 10 ROWS ONLY), efetivamente retornando a segunda página de resultados se considerarmos páginas de 10 registros cada.

Agora, vamos entender porque as outras alternativas não estão corretas:

  • TOP 10: Embora limite o número de resultados, não implementa paginação, pois sempre retorna os primeiros 10 registros.
  • WHERE 1 = 1: É uma condição sempre verdadeira, normalmente usada para facilitar a escrita de consultas dinâmicas, mas não tem relação com paginação.
  • CROSS JOIN: Cria um produto cartesiano entre duas tabelas, onde cada linha de uma tabela é combinada com todas as linhas da outra tabela, o que não tem relação com a paginação.

Com isso, fica claro que a alternativa B é a única que se alinha com o objetivo de implementar uma consulta paginada no contexto de um Banco de Dados SQL, e por isso, é a resposta correta.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo