Este artigo foi escrito por telles
Outra coisa pentelha no Oracle, fazer paginação de registros.
Vamos ver 2 métodos aqui. O primeiro é o definido pelo mago do Oracle, o Tom Kyte, do Ask Tom:
SELECT * FROM ( SELECT a.*, ROWNUM rnum FROM ( SELECT * FROM tabela_enorme ORDER BY campo_indexado ) a WHERE ROWNUM <= 61200 ) WHERE rnum >= 61000 ; ... ... ... Decorrido: 00:00:31.39
Agora outro método utilizando algo que eu realmente adoro, Window Functions:
SELECT * FROM (SELECT row_number() OVER (ORDER BY campo_indexado) myrow, p.* FROM tabela_enorme) WHERE myrow BETWEEN 91000 AND 91200; ... ... ... Decorrido: 00:00:29.34
Ou seja, utilizando Window Functions você tem uma sintaxe mais elegante e compacta e ainda ganha no desempenho. Para variar, a solução mais simples é a melhor.
Claro… eu ainda espero que alguém na Oracle tenha o bom senso de implementar o LIMIT e OFFSET, assim como uma infinidade de outras coisas que tornam a vida do desenvolvedor mais simples.
O artigo LIMIT e OFFSET no Oracle apareceu primeiro em Savepoint.
0sem comentários ainda