Я запускаю запрос в разработчике Oracle SQL, который выглядит примерно так:
выберите * из dummy_table, где col1 ‹ 10 и col2 ‹ 20 и col3 ‹ 40 и rownum ‹= x
Запрос занимает около 3 секунд и возвращает x строк, если значение x равно ‹= 12.
Но если заменить x на что-то большее, чем 12, запрос займет более 7 секунд и вернет только 12 результатов (другими словами, есть только 12 строк, удовлетворяющих предложению where).
Почему rownum ведет себя так? Я ожидал, что этот запрос займет почти такое же время, если значение x изменится с 12 на 13.
Редактировать: Еще одна вещь, которую я заметил, это составной индекс для столбцов col1, col2 и col3. Если я удалю индекс (или отключу его с помощью подсказки), запрос будет выполняться довольно быстро.