Ваш запрос должен будет отсчитать первые 90M
записи, чтобы получить следующие 100
, поэтому вряд ли есть место для улучшения.
Я не вижу предложение ORDER BY
в вашем подзапросе, но, вероятно, оно у вас есть. В этом случае вы можете создать индекс для него.
И вопрос: действительно ли ваши пользователи просматривают 900K
страниц, прежде чем жаловаться на производительность?
Обновление:
Если вам нужна последняя страница, вам нужно переписать столбец ORDER BY
в порядке убывания:
SELECT *
FROM (
SELECT rownum rnum, f.*
FROM findings f
ORDER BY
record_ordering_column DESC
)
WHERE rnum > 900
AND rownum <= 100
и создайте индекс для record_ordering_column
Обратите внимание, что я смешиваю rownum
из вложенных запросов для повышения производительности.
См. Эту статью в моем блоге для более подробной информации: