Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Чудо чудно, диво дивное (индексы не ловятся) / 15 сообщений из 15, страница 1 из 1
23.06.2016, 15:39:36
    #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
23.06.2016, 15:51:05
    #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
23.06.2016, 15:55:17
    #39261108
Чудо чудно, диво дивное (индексы не ловятся)
РаззяваВ чем может быть причинав запросе.
...
Рейтинг: 0 / 0
23.06.2016, 16:16:51
    #39261137
Раззява
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудо чудно, диво дивное (индексы не ловятся)
гистограммав запросе.
можно продолжить -> в разработчике -> обществе -> пространстве -> ничего не поделаешь, так устроен мир )
А что там с гистограммами? Может все на поверхности и как-то обойтись без этого страшного слова? :)
...
Рейтинг: 0 / 0
23.06.2016, 16:29:12
    #39261152
ORA__SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудо чудно, диво дивное (индексы не ловятся)
РаззяваТо индекс вьюшных таблиц снова подхватывается. А через соединение нет.
PUSH_PRED
...
Рейтинг: 0 / 0
23.06.2016, 16:39:11
    #39261166
Раззява
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудо чудно, диво дивное (индексы не ловятся)
ORA__SQL , спасибо помогло, все-то ему подсказывать надо оказывается ) еще и знать как подсказать )
...
Рейтинг: 0 / 0
23.06.2016, 16:39:42
    #39261167
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудо чудно, диво дивное (индексы не ловятся)
Раззявагистограммав запросе.
можно продолжить -> в разработчике -> обществе -> пространстве -> ничего не поделаешь, так устроен мир )
А что там с гистограммами? Может все на поверхности и как-то обойтись без этого страшного слова? :)
а чудо то где? не вижу?
одни только старые ржавые грабли, которые всегда были поводом для танцев
(примеров этого вам уже набросали)
...
Рейтинг: 0 / 0
23.06.2016, 16:45:27
    #39261177
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудо чудно, диво дивное (индексы не ловятся)
Часто такая бяка бывает из-за устаревшей или отсутствующей статистики на одной из таблиц/индексов
...
Рейтинг: 0 / 0
23.06.2016, 16:47:09
    #39261178
Раззява
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудо чудно, диво дивное (индексы не ловятся)
orawish , просто не понял как можно построить такой план, что при живом индексе, по которому достается одна запись для значения начинать лопатить миллионные таблицы. Статистика собрана. То есть каков механизм, что оракле посчитал, что самое зашибись будет, если начать жеско колбасить диски, а индексы это все фигня )
Когда хинтом протолкнули предикат внутрь вью (раньше не приходилось сталкиваться), все заработало. При этом именно при объединении теряет, при запросе по конкретному значению- то нормально ж все.
...
Рейтинг: 0 / 0
23.06.2016, 16:48:53
    #39261183
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудо чудно, диво дивное (индексы не ловятся)
Раззявапросто не понял как можно построить такой план, что при живом индексе, по которому достается одна запись для значения начинать лопатить миллионные таблицы.
Ответы - в трассе event 10053
...
Рейтинг: 0 / 0
23.06.2016, 16:49:20
    #39261184
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудо чудно, диво дивное (индексы не ловятся)
Раззява,

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

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

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


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