Todo desenvolvedor, principalmente desenvolvedor web, precisa fazer paginação de dados quando trabalha com banco de dados com grande quantidade de registros. O PostgreSQL é muito amigo quando se trata de fazer paginação de dados pois os recursos LIMIT e OFFSET permitem selecionar conjunto de dados para montarmos nossa paginação. Paginação no banco de dados é muito mais eficiente do que paginação no cliente.

O LIMIT (limite) permite que seja retornado somente a quantidade de registros especificado pelo parâmertro. O restante das linhas serão ignoradas e dependendo da quantidade real de registros, o retorno será muito mais rápido.

O OFFSET (deslocamento) diz para saltar a quantidade de linhas antes de começar a mostrar as linhas do parâmetro LIMIT.

Veja os exemplos abaixo.

SELECT id, nome FROM public.cliente WHERE estado = 'MS' ORDER BY nome LIMIT 50 ;

A instrução acima lista apenas os 50 primeiros registros da SELECT.

SELECT id, nome FROM public.cliente WHERE estado = 'MS' ORDER BY nome LIMIT 50 OFFSET 0;

A instrução acima lista apenas os 50 primeiros registros da SELECT iniciando do registro 0 que é o primeiro registro. Neste caso, não há diferença para a consulta anterior.

SELECT id, nome FROM public.cliente WHERE estado = 'MS' ORDER BY nome LIMIT 50 OFFSET 50;

A instrução acima lista 50 registros, iniciando do registro 50. Se desenvolvêssemos uma consulta com páginas de 50 registros, esta consulta retornaria a segunda página. Para as próximas páginas, bastaríamos alterar o valor do OFFSET em múltiplos de 50.

A consulta utilizando LIMIT e OFFSET é muito mais rápida e tem um custo muito menor do que você utilizar grade de dados com Javascript que apenas pega todos os registros e faz a paginação no cliente.

Um ponto importante a ser levado em consideração é sempre utilizar ORDER BY para estabelecer uma ordem única para as linhas do resultado, caso contrário, será retornado um subconjunto imprevisível de linhas da consulta.

Categorias: Banco de Dados

Cleberson

Casado, pai de família, autodidata e amante de tecnologia. Especialista em PHP, MySQL e PostgreSQL, certificado em RedHat e formando em Gestão de TI.

1 comentário

Daniel · 16 de abril de 2021 às 16:06

Muito obrigado por explicar sem enrolação.

Deixe um comentário

Avatar placeholder

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *