Секционированные внешние соединения
Секционированные внешние соединения полезны для извлечения разбросанных данных, которые иначе не так то просто увидеть в результирующем наборе. (Стандарт ANSI описывает секционированные внешние соединения, но первой платформой, на которой они реализованы, является Oracle.) Например, в таблицу product заносятся сведения обо всех производимых нами продуктах, а в таблицу manufacturing — информация о том, когда продукты были произведены. Поскольку мы не производим каждый продукт непрерывно, соединенные данные двух таблиц могут быть фрагментированы по времени.
SELECT manufacturing.time_id AS time,
product_name AS name,
quantity AS qty
FROM product
PARTITION BY (product_name)
RIGHT OUTER JOIN times ON (manufacturing.time_id =product.time_id)
WHERE manufacturing.time_id
BETWEEN TO_DATE(’01/10/05′, ‘DD/MM/YY’) AND TO_DATE(’06/10/05′, ‘DD/MM/YY’)
ORDER BY 2, 1;
Этот пример запроса и результирующий набор показывают, что секционированные внешние соединения полезно использовать для извлечения результирующих наборов, которые иначе было бы сложно получить из-за фрагментации данных.