Limit e Offset no PostgreSQL

Limit e Offset no PostgreSQL

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.

About the Author

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.

Deixar um comentário

Seu endereço de email não será publicado.