powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / index unique scan после удаления статистики
14 сообщений из 14, страница 1 из 1
index unique scan после удаления статистики
    #39313522
about_job
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Помогите, пожалуйста, со следующей проблемой:
1.
Есть таблица t с полями f1(primary key, number),f2(number),f3(varchar2),f4(varchar2),f5,f6,f7.
Имеются отдельные индексы по полям f2,f3,f4.
Количество записей в таблице ~8 млн.
В среднем одна запись таблицы содержит ~1500 символов во всех полях вместе взятых.
2.
Удаляю статистику по таблице t: "exec sys.dbms.delete_table_statistics('myschema','t')",
удаляю статистику по индексам:
"exec sys.dbms.delete_index_statistics('myschema','t_f2_ix2')",
"exec sys.dbms.delete_index_statistics('myschema','t_f3_ix3')",
"exec sys.dbms.delete_index_statistics('myschema','t_f4_ix4')".

3.
Выполняю скрипт:
SELECT *
FROM t
WHERE f2=2 AND f3=3 AND f4=4

4.
В результате в explain plan "INDEX RANGE SCAN", хотя я ожидал увидеть "table full scan". Или я неправильно ожидал?
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39313541
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
about_jobВ результате в explain plan "INDEX RANGE SCAN", хотя я ожидал увидеть "table full scan". Или я неправильно ожидал?
Ну подумай - зачем оптимизатору полагать создателя БД идиотом?
А раз он не идиот, то значит сделал индексы не зря.
А записей много. Почему бы и не воспользоваться индексом?
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39313542
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Ну подумай - зачем оптимизатору полагать создателя БД идиотом?
А раз он не идиот, то значит сделал индексы не зря.
А записей много. Почему бы и не воспользоваться индексом?
Оптимизатор давно уже не меряет категориями есть индекс - нужно использовать .
Он основывается на статистических показателях, которые либо собраны, либо собираются динамически, либо берутся по умолчанию.
Но показатели в любом случае будут и на их основе и генерится план.
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39313547
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|Но показатели в любом случае будут и на их основе и генерится план.
Ну первый раз. Статистики нет. Индексы есть. Что ему полагать-то?
Только забитые в него константы на этот случай.
Потом да - начнет подстраиваться.

P.S. TC еще повезло, что ему bitmap conversion не врубли. :)
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39313575
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевНу первый раз. Статистики нет. Индексы есть. Что ему полагать-то?
Возьмет по умолчанию.
К примеру, если есть статистика по всей таблице, но нет по отдельному столбцу, селективность этого столбца возьмется за 1%.
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39313585
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|,

В данном примере нет статистики вообще.
В связи с чем он прикинет во сколько обойдется фуллскан, и во сколько обойдется скан индекса+минимальные накладные расходы на индекс+во сколько обойдется доступ к таблице исходя из средней по земному шару селективности индексов. :)
Но рассматривать план с индексным доступом он будет вне зависимости от наличия статистики (ибо см. выше не идиоты же кругом). :)
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39313605
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев В данном примере нет статистики вообще
Статистика для генератора планов есть ВСЕГДА.
Вот вообще ВСЕГДА.
Он ее получит из словаря, динамически соберет или рассчитает, но она будет ВСЕГДА.
Создай таблицу, отключи dynamic sampling и посмотри планы запросов к ней.
Estimated Rows + estimated Bytes будут заполнены.

Сергей Арсеньев Но рассматривать план с индексным доступом он будет вне зависимости от наличия статистики (ибо см. выше не идиоты же кругом). :)
Также можешь сам посмотреть.
Сними 10053 и посмотри на основе чего выбираются различные пути доступа.
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39313641
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|Также можешь сам посмотреть.
Ты вообще вопрос ТС понял?
Он спросил - почему Oracle рассмотрел вариант с использование индекса?
Мой ответ - потому что индекс есть (ну не идиоты же делали, чтоб априори не рассматривать).
Твоя поправка - потому что статистика есть всегда.
Мы о чем спорим то?
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39313652
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев,
Вот твой ответ про то, что если индекс есть, то им нужно пользоваться.
Сергей АрсеньевА записей много. Почему бы и не воспользоваться индексом?
Я же пытаюсь втолковать вам обоим, что для генератора планов ничего не поменялось, он по прежнему получает статистические показатели и рассматривает разные пути доступа.
И то, что выбирается индекс, это исключительно заслуга опять таки статистических показателей, которые для данного случая рассчитываются на основе имеющихся данных (размер сегмента таблицы, системные параметры и прочее).
То есть, если что-то поменяется, к примеру те же параметры optimizer_index_*, то может быть выбрать FULL TABLE SCAN.
Понимаешь в чем отличие от твоего Сергей Арсеньевзачем оптимизатору полагать создателя БД идиотом? А раз он не идиот, то значит сделал индексы не зря?
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39313658
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|Сергей Арсеньев,
Вот твой ответ про то, что если индекс есть, то им нужно пользоваться.
можно
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39313680
ODSvfvytcvyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39314645
about_job
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
отключение dynamic sampling не повлияло на план выполнения
10053 смогу снять теперь только через 2 недели
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39314692
Фотография Makar4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|Сергей Арсеньев В данном примере нет статистики вообще
Статистика для генератора планов есть ВСЕГДА.
Вот вообще ВСЕГДА.
Он ее получит из словаря, динамически соберет или рассчитает, но она будет ВСЕГДА.
Создай таблицу, отключи dynamic sampling и посмотри планы запросов к ней.
Estimated Rows + estimated Bytes будут заполнены.Это хак.
Ну нет статистики. Вынесли её только что. Но нормальный оптимизатор - всё равно здраво рассудит, что раз есть индекс, то лучше воспользоваться им, вместо полного скана.
...
Рейтинг: 0 / 0
index unique scan после удаления статистики
    #39314957
about_job
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такой же эксперимент проводился на БД с той же самой структурой, с объемом данных того же порядка, но на другом физическом сервере (версия такая же - 11).
И там в плане выполнения предлагался full scan.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / index unique scan после удаления статистики
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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