Я работаю с оракулом DB, пытающимся настроить некоторые запросы, и у меня возникают проблемы с пониманием того, почему работа с определенным предложением определенным образом так сильно влияет на производительность запросов. Вот версия запроса, которую я делаю
select * from
(
select a.*, rownum rn from
(
select *
from table_foo
) a where rownum <= 3
) where rn >= 2
Тот же запрос, заменив две последние строки этим
) a where rownum >=2 rownum <= 3
)
выполняет ужасно. На несколько порядков хуже
) a where rownum between 2 and 3
)
также выполняет ужасно. Я не понимаю магию первого запроса и то, как применить ее к другим аналогичным запросам.