У меня есть что-то вроде следующей структуры: Таблица1 -> Таблица2 отношения 1: м
Мне нужно выполнить запросы, аналогичные следующим:
select Table1.id from Table1 left outer join Table2 on (Table1.id1 = Table2.id2) where Table2.name like '%a%' and rownum < 11
т.е. Я хочу первые 10 идентификаторов из таблицы 1, которая соответствует условиям в таблице 2. Проблема заключается в том, что я должен использовать разные, но условие «отличный» применяется после «rownum <11», так что результатом может быть, например, 5 записей, даже если их число больше 10. </p>
Очевидным решением является использование следующего:
select id from ( select Table1.id from Table1 left outer join Table2 on (Table1.id1 = Table2.id2) where Table2.name like '%a%' ) where rownum < 11
Но я боюсь выполнения такого запроса. Если таблица Table1 содержит около 300 тыс. Записей, а таблица 2 содержит около 700 тыс. Записей, разве такой запрос не будет слишком медленным?
Есть ли другой запрос, но без внутреннего выбора? К сожалению, я хочу избежать использования внутренних селектов.