Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oráculo e paginação


Sua consulta precisará contar os primeiros 90M registros para obter os próximos 100 , portanto, dificilmente há espaço para melhorias.

Não vejo um ORDER BY cláusula em sua subconsulta, mas provavelmente você a tem. Nesse caso, você pode querer criar um índice nele.

E uma pergunta:seus usuários realmente clicam em 900K páginas antes de reclamar sobre o desempenho?

Atualização:

Se você precisar da página mais recente, precisará reescrever seu ORDER BY coluna em ordem decrescente:
SELECT  *
FROM    (
        SELECT  rownum rnum, f.*
        FROM    findings f
        ORDER BY
                record_ordering_column DESC
        ) 
WHERE   rnum > 900
        AND rownum <= 100

e crie um índice em record_ordering_column

Observe que eu misturo rownum 's das consultas aninhadas para melhorar o desempenho.

Veja este artigo no meu blog para mais detalhes: