powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Чудо чудно, диво дивное (индексы не ловятся)
15 сообщений из 15, страница 1 из 1
Чудо чудно, диво дивное (индексы не ловятся)
    #39261083
Раззява
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Есть вью вида:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create or replace view v_test
as
select * from table1
union all
select * from table2
union all
select * from table3
union all
select * from table4
union all
select * from table5


2. каждая таблица этой вью имеет миллионы записей и индекс по ключевому полю возвращающий для каждого значения одну запись, т.е. практически уникальный

3. запрос к view вида
Код: plsql
1.
slect * from v_test where id = :id


дает план с обращением по индексу к каждой таблице view и отрабатывает за доли сек.

4. а вот запрос вида
Код: plsql
1.
2.
3.
4.
5.
select v.*
  from v_test v,
       master_tab t
 where t.id = :id
   and t.vid = v.id


По плану достатет по индексу из master_tab нужные записи (примерно 100шт), а потом фулсканит каждую таблицу из v_test.
И выполняется соответственно оч. долго, ждать не стал.
В чем может быть причина не пойму.
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261107
Раззява
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При этом если задать id явно
Код: plsql
1.
2.
3.
4.
5.
6.
select v.*
  from v_test v,
       master_tab t
 where t.id = :id
   and  v.id = :id2
   and t.vid = v.id


То индекс вьюшных таблиц снова подхватывается. А через соединение нет.
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261108
РаззяваВ чем может быть причинав запросе.
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261137
Раззява
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гистограммав запросе.
можно продолжить -> в разработчике -> обществе -> пространстве -> ничего не поделаешь, так устроен мир )
А что там с гистограммами? Может все на поверхности и как-то обойтись без этого страшного слова? :)
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261152
ORA__SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РаззяваТо индекс вьюшных таблиц снова подхватывается. А через соединение нет.
PUSH_PRED
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261166
Раззява
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ORA__SQL , спасибо помогло, все-то ему подсказывать надо оказывается ) еще и знать как подсказать )
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261167
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раззявагистограммав запросе.
можно продолжить -> в разработчике -> обществе -> пространстве -> ничего не поделаешь, так устроен мир )
А что там с гистограммами? Может все на поверхности и как-то обойтись без этого страшного слова? :)
а чудо то где? не вижу?
одни только старые ржавые грабли, которые всегда были поводом для танцев
(примеров этого вам уже набросали)
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261177
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Часто такая бяка бывает из-за устаревшей или отсутствующей статистики на одной из таблиц/индексов
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261178
Раззява
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawish , просто не понял как можно построить такой план, что при живом индексе, по которому достается одна запись для значения начинать лопатить миллионные таблицы. Статистика собрана. То есть каков механизм, что оракле посчитал, что самое зашибись будет, если начать жеско колбасить диски, а индексы это все фигня )
Когда хинтом протолкнули предикат внутрь вью (раньше не приходилось сталкиваться), все заработало. При этом именно при объединении теряет, при запросе по конкретному значению- то нормально ж все.
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261183
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раззявапросто не понял как можно построить такой план, что при живом индексе, по которому достается одна запись для значения начинать лопатить миллионные таблицы.
Ответы - в трассе event 10053
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261184
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Раззява,

версия оракла какая? Статистика точно собрана по всем индексам и таблицам? трассу 10053 покажите
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261185
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Раззява,

как гарантируется что по ID будет только одна запись во всех таблицах? для каждой таблицы свой диапазон ID? check constraints создали?
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261200
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раззява orawish , просто не понял как можно построить такой план, что при живом индексе, по которому достается одна запись для значения начинать лопатить миллионные таблицы. Статистика собрана. То есть каков механизм, что оракле посчитал, что самое зашибись будет, если начать жеско колбасить диски, а индексы это все фигня )
Когда хинтом протолкнули предикат внутрь вью (раньше не приходилось сталкиваться), все заработало. При этом именно при объединении теряет, при запросе по конкретному значению- то нормально ж все.
бывало, бывает, что теряет
имхо, дефект реализации оптимизатора (кстати - заметьте, что версия ваша никого не интересует, ибо ~всех касается)
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261202
Раззява
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtenderтрассу 10053 покажите
Нет у меня доступа к совершению таких чудес )
xtenderЧасто такая бяка бывает из-за устаревшей или отсутствующей статистики на одной из таблиц/индексов
Ок. Дропаю индекс на одной из таблиц - при запросе по параметру по ней будет фулскан, а по остальным ищет по индексу.
То есть налицо, что оракл смотрит дифференцировано на каждую таблицу вью и принимает решение отдельно по каждой. И это ожидаемо. Так? Теперь строим снова такой же индекс (свежий же). И картина повторяется - по параметру индекс подхватывается, а при соединении вью с другой таблицей начинает фулсканить (сейчас кстати начал IFFS).
Но ладно, без трассировки видно все равно не понять, потому все это лирика у меня - пусть будет PUSH_PRED.
Версия 11.2.0.1.0 EE
...
Рейтинг: 0 / 0
Чудо чудно, диво дивное (индексы не ловятся)
    #39261247
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
orawish,

В таких простых случаях оптимизатор почти всегда выбирает правильный план уже давно(с 10.2 точно), если усложнять тогда - да, косяки бывают часто. Имхо надо трассировать
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Чудо чудно, диво дивное (индексы не ловятся)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]