Um cenário que precisa ter performance dentro de uma T-SQL ...
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