Limit e Offset
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.
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.
LIMIT (limite) e OFFSET (deslocamento) permitem que seja trazida apenas uma parte das linhas geradas pelo restante da consulta:
SELECT lista_de_seleção FROM expressão_de_tabela [LIMIT { número | ALL }] [OFFSET número]
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.
OFFSET diz para saltar esta quantidade de linhas antes de começar a retornar as linhas. OFFSET 0 é o mesmo que omitir a cláusula OFFSET. Se forem especificados tanto OFFSET quanto LIMIT, então são saltadas OFFSET linhas antes de começar a contar as LIMIT linhas que serão retornadas.
Quando se utiliza LIMIT é importante utilizar a cláusula 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; pode-se desejar obter da décima a vigésima linha, mas da décima a vigésima de qual ordem? A ordem é desconhecida a não ser que seja especificado ORDER BY.
deck
By walternascimento
deck
- 286