У меня есть что-то вроде следующую структуру: Table1 -> Table2 отношения 1: мвыбрать первые N различных строк без внутреннего выбора в оракула
мне нужно выполнять запросы, подобные следующему:
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.
Явное решение использовать следующее:
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
Но я боюсь выполнения такого запроса. Если таблица 1 содержит около 300 тыс. Записей, а таблица2 содержит около 700 тыс. Записей, не будет ли такой запрос действительно медленным?
Есть ли другой запрос, но без внутреннего выбора? К несчастью, я хочу избежать использования внутренних выборок.
Неужели такой запрос не будет очень медленным? Если бы я знал, как медленно, на самом деле медленно, я мог бы ответить на вопрос. –