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 10 e 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:

SQL
SELECT * FROM clientes;
SELECT no SQL

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.

Ícone SQLSQL Impressionador

Domine a linguagem mais importante do Mundo para quem trabalha com Dados, seja para se destacar na sua empresa atual, para conseguir um diferencial em processos seletivos ou até mesmo para entrar em áreas de dados.

Começar agoraSeta para a direita
Fundo SQLTelas SQL
Luz SQL

É 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.

SQL
SELECT * FROM clientes
LIMIT 5;
LIMIT no SQL

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.

SQL
SELECT * FROM clientes
ORDER BY Renda_Anual desc
LIMIT 10;
LIMIT e ORDER BY no SQL

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.

SQL
SELECT * FROM clientes
LIMIT 10 OFFSET 2;
OFFSET no SQL

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.

SQL
SELECT * FROM clientes
LIMIT 2, 10;
OFFSET no SQL

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!


Quer aprender mais sobre SQL com um minicurso básico gratuito?