Если вы соединяете несколько сотен, а в некоторых случаях и несколько тысяч таблиц в представлении UNION ALL, время, затрачиваемое на синтаксический анализ, и потребности в памяти для выполнения этой операции могут стать существенным ограничивающим фактором. Если каждый час нужно обслуживать всего несколько десятков запросов на получение итоговых отчетов, эти факторы не будут оказывать заметного влияния, но если приходится удовлетворять десятки рабочих запросов в секунду, то время синтаксического анализа, измеряемое в секундах, игнорировать нельзя. Отметим, однако, что когда в запросе используются связанные переменные (bind variables), Oracle может автоматически кэшировать его в разделяемом пуле, избегая таким образом необходимости часто выполнять синтаксический анализ.
Проблемой могут быть и затраты, связанные с поиском в индексе. Нерегламентированный запрос к представлению UNION ALL для 1000 таблиц может успешно выполняться с использованием индекса каждой из базовых таблиц, на основе которых строится представление. Но даже с имеющимися в Oracle средствами ручного секционирования процессор запросов для удовлетворения такого запроса должен будет посетить все 1000 индексов. Почему? Потому что не существует механизма, который сообщил бы оптимизатору о том, как секционированы данные. Конечно, хотелось бы, чтобы корневые блоки индекса были резидентными в буферном кэше. Во многих случаях только по одному корневому блоку индекса вы сможете определить, что конкретная таблица не содержит искомых строк. В упомянутом случае с типичным запросом к хранилищу данных дополнительные 1000 ссылок на корневые блоки индекса вряд ли существенно повлияют на общую производительность приложения. Однако в высокопроизводительной системе обработки транзакций они вполне могут оказаться причиной катастрофы.
Декларативное секционирование
В OracleS предложено более эффективное решение задачи секционирования таблиц, чем в Oracle?. Эта СУБД позволяет разбивать одну логическую таблицу на множество физически отдельных частей в зависимости от диапазонов ключевых значений. Каждая такая часть называется секцией. Хотя секции хранятся и администрируются независимо друг от друга, запрос и обновление данных в них можно осуществлять при помощи ссылки на имя логической таблицы (а также посредством синонима или представления, которое строится на основе этой таблицы). Другими словами, в OracleS обеспечивается прозрачность секционирования, и приложение не обязано знать, что таблица секционирована.
OracleS также обеспечивает независимость секций. С некоторыми ограничениями (они рассмотрены ниже в разделе "Секционированные индексы") вы можете обращаться к данным в одной секции и манипулировать ими даже в том случае, если некоторые или все остальные секции не доступны. Это очень большое преимущество для администраторов, потому что они могут выполнять сопровождение отдельных секций, тогда как остальные секции можно в это время использовать.
4.  "Большие" особенности OracleS	51