после исследования, играя с запросами и проводя онлайн-исследования, я обращаюсь к вам за информацией.Ждем ваших ответов!Я пытаюсь написать это в общих чертах, поскольку я ищу общие идеи о том, как это сделать, а не точные утверждения.Если этот вопрос получен плохо, я с радостью переделываю его, дайте мне знать.Вот и мы:
У меня есть две таблицы:
- Таблица 1 содержит 10 записей MIO.Он содержит только один столбец:
- Столбец A: уникальный идентификатор (текст, например, «5uz1g09aksmsd»)
- Таблица 2 содержит 300 записей MIO.Он имеет два столбца:
- Столбец A: уникальный идентификатор (текст, например, '5uz1g09aksmsd')
- Столбец B: номер (например, 32.5432)
Пока нет индексов и т. Д., Даже ПК, поскольку обе таблицы были только что созданы с помощью CTAS.Обе таблицы были проанализированы.
Сейчас я ищу быстрый запрос (подготовительная работа, например, создание индекса может занять время, без проблем), чтобы создать третью таблицу, содержащую 10 строк MIO таблицы 1,и столбец B таблицы 2, если совпадение найдено через столбец A (для 99% совпадение будет найдено).Чтобы было понятнее, простой CTAS может быть следующим:
create table3 as
select t1.a,
(select t2.b from table2 t2 where t2.a = t1.a and rownum = 1)
-- the rownum = 1 is to show Oracle that there can only be one match
from table1 t1;
Это не так быстро, как может быть (я надеюсь).Каковы ваши идеи, чтобы сделать это быстрее?Создание индексов?Какие?Какое объединение вы хотели бы видеть в плане выполнения?Хеш-соединение?Я уже нашел
- создание таблицы nologging
- параллельное выполнение запроса и создание параллельной таблицы
Но меня интересуют особенности того, как идеальный план выполненияэто будет выглядеть с учетом того, что нам разрешено изменять систему (например, создавать индекс).В частности, я прошу 11gR2, но комментарии 12c также приветствуются.