ПРОСМОТР1 ЭТО:
SELECT A, B, C FROM view2
UNION ALL
SELECT A, B, C FROM view3
INNER JOIN TBL5 ON view3.CODE = TBL5.CODE
Столбец C индексируется в исходных таблицах, и когда я выполняю любой из операторов select по отдельности, он использует индекс и мгновенно возвращается. Когда я использую представление, время ожидания истекает. У меня сложилось впечатление, что Oracle переписала запросы к представлениям и использовала индексы там, где это было полезно, а не делала SELECT * FROM VIEW1
, а затем применяла предикаты постфактум.
Что я делаю неправильно? Приведенные выше примеры представлений освещают проблему, но каждое из моих реальных представлений объединяет десятки таблиц, поэтому представление действительно необходимо.