LIMIT e OFFSET no SQL – Otimize a Visualização de Dados
Aprenda a usar os comandos LIMIT e OFFSET no SQL para otimizar a visualização de dados!
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
O que você aprende neste vídeo
Resposta rápida: LIMIT define quantas linhas a consulta devolve e OFFSET define quantas pular antes de começar. SELECT * FROM clientes LIMIT 5 traz as cinco primeiras linhas na ordem em que já estão, sem classificar nada. Para virar ranking, combine com ORDER BY; para paginar, use OFFSET com o mesmo LIMIT em cada página.
Neste vídeo (12 min):
- 0:00 - Dois comandos simples de SQL que muita gente nunca chegou a usar
- 1:35 - A tabela de clientes do exemplo, com 100 linhas no output
- 2:10 - Por que rodar SELECT numa tabela de milhões de linhas só para olhar é desperdício
- 3:10 -
LIMIT 5: recortando as cinco primeiras linhas da consulta - 3:45 - O aviso que evita erro de leitura: LIMIT não classifica, então isso não é top 5
- 4:10 -
LIMIT 10e o uso mais comum, que é reconhecer a tabela - 4:50 - A segunda utilidade: montar ranking pela coluna de renda anual
- 5:20 - ORDER BY com DESC antes do LIMIT, e o top 10 saindo pronto
- 6:30 - OFFSET entra como deslocamento: quantas linhas pular antes de contar o limite
- 7:15 - OFFSET 0 é o padrão, então não escrever nada dá no mesmo
- 8:00 - OFFSET 1 e OFFSET 2 na prática, com as primeiras linhas saindo do resultado
- 9:20 - Para que serve o deslocamento no dia a dia: paginação de 10 em 10 linhas
- 10:00 - A sintaxe abreviada
LIMIT 2,10, em que o deslocamento vem primeiro
Trechos do vídeo:
- Ele não fez nenhuma ordenação; eu só peguei a minha tabela e recortei as primeiras cinco linhas.
- Quando a gente utiliza o limit em conjunto com o order by, a gente consegue o efeito de ranking.
- Geralmente o offset é utilizado para paginação, quando eu quero criar páginas de 10 em 10 linhas.
O LIMIT define quantas linhas a consulta devolve e o OFFSET define quantas pular antes de começar. No MySQL, no PostgreSQL e no SQLite a sintaxe é SELECT * FROM clientes LIMIT 10 OFFSET 2;, que devolve 10 linhas a partir da terceira. Sem ORDER BY a ordem das linhas não é garantida. No SQL Server o equivalente é TOP ou OFFSET ... FETCH NEXT.
Como usar LIMIT e OFFSET no SQL
Na aula de hoje, quero apresentar os comandos LIMIT e OFFSET no SQL para otimizar a visualização de dados.
É muito comum utilizar o comando SELECT para dar uma espiada na base de dados, entendendo do que se trata e quais informações estão lá.
No entanto, frequentemente lidamos com bancos de dados enormes, com milhões de linhas, e não é nada prático visualizar todas essas linhas quando só queremos ter uma noção da base de dados. É aí que entram em cena o comando LIMIT e o comando OFFSET.
Podemos usar o comando LIMIT e o comando OFFSET para selecionar e carregar apenas uma parte do banco de dados, otimizando assim a visualização de dados, sem a necessidade de carregar a base de dados inteira.
Comando SELECT no SQL
Os comandos LIMIT e OFFSET são bastante simples de utilizar. Esta aula será direta ao ponto e objetiva. Para compreendê-los, vamos primeiro visualizar uma consulta utilizando o comando SELECT.
Comecei fazendo uma consulta ao meu banco de dados, selecionando a tabela clientes:
SELECT * FROM clientes;
Nessa tabela, tenho informações referentes aos clientes, como ID, nome, sobrenome, data de nascimento, estado civil e assim por diante. No caso, essa tabela possui 100 linhas, mas em muitos casos, lidaremos com milhões de linhas.
É comum utilizarmos o comando SELECT para visualizar os dados de uma tabela. Contudo, à medida que a tabela cresce, aumenta o processamento necessário no banco de dados para selecionar e retornar esses dados.
Assim, se o objetivo for visualizar a tabela apenas para conhecer as informações presentes no banco de dados, não é muito viável utilizar o comando SELECT selecionando toda a tabela.
Para casos como esse, o ideal é limitar essa visualização, pegando apenas algumas linhas, como as cinco primeiras, por exemplo. Para fazer isso, vamos utilizar o LIMIT.
Comando LIMIT no SQL
O comando LIMIT permite restringir o número de itens que você retorna da sua consulta. Em outras palavras, para visualizar apenas as cinco primeiras linhas da tabela, você pode passar o número 5 como parâmetro.
SELECT * FROM clientes
LIMIT 5;
Esse comando não realiza nenhuma ordenação ou classificação. Ele simplesmente pega as primeiras linhas delimitadas pelo número que você definir.
Essa abordagem é muito útil quando você deseja apenas conhecer uma tabela, entender quais tipos de dados e colunas estão presentes nela, sem precisar carregar a tabela toda.
Comando LIMIT e ORDER BY no SQL
Como mencionado, o comando LIMIT não realiza nenhuma ordenação, ou classificação. Porém, se utilizarmos esse comando junto com o ORDER BY, poderemos, aí sim, criar rankings a partir desses comandos.
SELECT * FROM clientes
ORDER BY Renda_Anual desc
LIMIT 10;
Dessa forma, teremos os 10 clientes com as maiores rendas anuais ranqueados do maior para o menor.
Comando OFFSET no SQL
O OFFSET, por sua vez, é um comando de deslocamento que nos permite determinar o intervalo de linhas que queremos pegar e visualizar da tabela.
Em conjunto com o LIMIT, podemos determinar a partir de qual linha começaremos com o OFFSET e a quantidade de linhas que pegaremos com o LIMIT.
SELECT * FROM clientes
LIMIT 10 OFFSET 2;
Repare que, nesse caso, nossa consulta retornou apenas 10 clientes, mas a partir da terceira linha. Ou seja, as duas linhas que passamos para o OFFSET foram puladas, e a partir delas foram retornadas as 10 linhas definidas no LIMIT.
Essa abordagem geralmente é utilizada quando estamos fazendo paginação. Por exemplo, para criar páginas de 10 em 10 linhas ou de 20 em 20 linhas, de acordo com o deslocamento definido.
É possível obter o mesmo resultado omitindo a palavra-chave OFFSET. Utilizando apenas o comando LIMIT, passamos como primeiro argumento a quantidade de linhas deslocadas e em seguida a quantidade que desejamos retornar.
SELECT * FROM clientes
LIMIT 2, 10;
Observe que o resultado dessa consulta é o mesmo da anterior em que utilizamos o OFFSET.
LIMIT e OFFSET em outros bancos (SQL Server e Oracle)
Atenção ao banco que você usa. A forma abreviada LIMIT 2, 10 é exclusiva do MySQL e do MariaDB. Já o LIMIT 10 OFFSET 2 funciona também no PostgreSQL e no SQLite. No SQL Server não existe LIMIT: para pegar as primeiras linhas use SELECT TOP 10 * FROM clientes; e, para deslocar, SELECT * FROM clientes ORDER BY id OFFSET 2 ROWS FETCH NEXT 10 ROWS ONLY; (nesse caso o ORDER BY é obrigatório). No Oracle, o equivalente é FETCH FIRST 10 ROWS ONLY.
Conclusão sobre LIMIT e OFFSET no SQL
Nessa aula, você aprendeu como utilizar os comandos LIMIT e OFFSET no SQL para otimizar a visualização de dados.
Com o LIMIT, podemos restringir a visualização de linhas, retornando apenas as informações necessárias de uma tabela e evitando processamento desnecessário.
Já com o comando OFFSET, exploramos como deslocar consultas em nosso banco de dados, o que é especialmente útil para paginação.
Ao incorporar esses dois comandos no SQL, suas consultas e visualizações de dados se tornarão mais práticas e otimizadas, evitando o processamento desnecessário de dados.
Para aprofundar ainda mais seus conhecimentos, recomendo o curso de SQL da Hashtag.
Perguntas frequentes sobre LIMIT e OFFSET no SQL
1. Qual a diferença entre LIMIT e OFFSET no SQL?
O LIMIT define quantas linhas a consulta devolve. O OFFSET define quantas pular antes de começar a devolver. Em LIMIT 10 OFFSET 2, o banco pula as 2 primeiras linhas e retorna as 10 seguintes. Usados juntos, formam a base da paginação.
2. Como limitar o número de linhas no SQL Server?
O SQL Server não tem LIMIT. Para as primeiras linhas, use SELECT TOP 10 * FROM clientes;. Para deslocar como no OFFSET, use SELECT * FROM clientes ORDER BY id OFFSET 2 ROWS FETCH NEXT 10 ROWS ONLY; — aqui o ORDER BY é obrigatório.
3. Dá para usar o LIMIT sem o ORDER BY?
Dá, e é o que fazemos quando queremos apenas espiar a tabela. Só que sem ORDER BY o banco não garante quais linhas virão nem em que ordem. Para ranking ou paginação estável, sempre combine com ORDER BY.
4. Como fazer paginação com LIMIT e OFFSET?
Fixe o tamanho da página no LIMIT e multiplique-o pela página anterior no OFFSET. Com 10 registros por página: página 1 = LIMIT 10 OFFSET 0, página 2 = LIMIT 10 OFFSET 10, página 3 = LIMIT 10 OFFSET 20.
Hashtag Treinamentos
Para acessar outras publicações de SQL, clique aqui!


