Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Зачем смотрит в таблицу  [new]
Avotge
Guest
1. Есть двадцать идентичных по структуре таблиц mytable1, mytable2...mytable20
2. Есть запрос (упрощенно):
select nvl(f, '~') from mytable1 where nvl(f, '~') = :pf

3. Для каждой таблицы из 20-ти этот запрос отрабатывает быстро и достает данные только из индекса (индекс по функции)
4. Теперь эти 20 таблиц объединяем во вьюшке через union all
И далаем этот же запрос, но к вьюшке:

План показывает для каждой таблицы обращение к индексу и потом table access by rowid.
(при том, что еще раз: если делать этот же запрос отдельно к каждой таблице, то table access by rowed нет, - только Index range scan).

Или план в девелопере отличается от реального, или когда много таблиц, то план не всегда может подхватиться оптимальный
(сталкивался когда вообще выбирает iffs).
Или в каком-то случае может быть обращение к таблице, если все данные есть в индексе?
16 фев 17, 13:19    [20217525]     Ответить | Цитировать Сообщить модератору
 Re: Зачем смотрит в таблицу  [new]
AmKad
Member

Откуда:
Сообщений: 4492
Тест-кейс вопроизести сможешь? Или хотя бы метаданные по существующим таблицам и планы существующих запросов показать?
16 фев 17, 13:31    [20217577]     Ответить | Цитировать Сообщить модератору
 Re: Зачем смотрит в таблицу  [new]
Avotge
Guest
AmKad
Тест-кейс воспроизести сможешь?

Когда делаю тест-кейс, то во вьюшке план показывает нормальный (как ожидается).
Позже еще попробую.
16 фев 17, 13:42    [20217635]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить