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: