Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
SputnikORA
Guest
Добрый день!

Посоветуйте, пожалуйста, как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет? Посмотрел по форуму много написано а четких рекомендаций нет.
Кто-нибудь коротко и ясно может посоветовать? Заранее спасибо
18 апр 07, 09:50    [4034604]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
Анонимный Оле
Guest
ээээ.... На Металинке была нота по поиску неиспользуемых индексов...
18 апр 07, 09:51    [4034609]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
SputnikORA
Guest
Анонимный Оле
ээээ.... На Металинке была нота по поиску неиспользуемых индексов...


а ссылочку не помнишь?
18 апр 07, 09:53    [4034618]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
evostr
Member

Откуда: Екатеринбург
Сообщений: 1278
Анонимный Оле
ээээ.... На Металинке была нота по поиску неиспользуемых индексов...

Насколько я понял, автору нужно определить используется ли индекс при определенном запросе, а не найти неиспользуемые индексы.
18 апр 07, 10:00    [4034660]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
SputnikORA
Guest
evostr
Анонимный Оле
ээээ.... На Металинке была нота по поиску неиспользуемых индексов...

Насколько я понял, автору нужно определить используется ли индекс при определенном запросе, а не найти неиспользуемые индексы.


абсолютно верно
18 апр 07, 10:01    [4034667]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
scott/tiger
Guest
для конкретного селекта - explain plan

используется ли вообще для чего нибудь
ALTER INDEX index_name MONITORING USAGE
select ... from V$OBJECT_USAGE ...
ALTER INDEX index_name NOMONITORING USAGE

А можно пример искуссии где "много написано, а рекомендаций нет"? :)
18 апр 07, 10:03    [4034677]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
evostr
Member

Откуда: Екатеринбург
Сообщений: 1278
Чтобы точно опеределить, используется ли нужный индекс в запросе, можно воспользоваться трассировкой. Но нужно позаботиться, чтобы план выполнения туда попал, для этого запрос должен быть разобран в момент трассировки (hard parse) и курсор должен быть закрыт до окончания трассировки.
18 апр 07, 10:06    [4034693]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
SputnikORA
Guest
scott/tiger
для конкретного селекта - explain plan

используется ли вообще для чего нибудь
ALTER INDEX index_name MONITORING USAGE
select ... from V$OBJECT_USAGE ...
ALTER INDEX index_name NOMONITORING USAGE

А можно пример искуссии где "много написано, а рекомендаций нет"? :)


Это для в Oracle 9, а 8-ке?
18 апр 07, 10:12    [4034751]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
evostr
запрос должен быть разобран в момент трассировки (hard parse)
А че, мягкий разбор не подходит?
18 апр 07, 10:14    [4034759]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
SputnikORA
Guest
evostr
Чтобы точно опеределить, используется ли нужный индекс в запросе, можно воспользоваться трассировкой. Но нужно позаботиться, чтобы план выполнения туда попал, для этого запрос должен быть разобран в момент трассировки (hard parse) и курсор должен быть закрыт до окончания трассировки.



т.е. можно сбросом ALTER SYSTEM FLUSH SHARED POOL

а дальше TKPROF trace.trc trace.out EXPLAIN=example/example ?
18 апр 07, 10:17    [4034783]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
scott/tiger
Guest
А бывает так что Explain plan показывает одно а выполняется иначе?
Если запрос долгий, то выполнять его каждый раз для того чтобы план посмотреть может быть накладно :)
18 апр 07, 10:20    [4034803]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
evostr
Member

Откуда: Екатеринбург
Сообщений: 1278
Вячеслав Любомудров
А че, мягкий разбор не подходит?

Подходит :)
18 апр 07, 10:22    [4034812]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
evostr
Member

Откуда: Екатеринбург
Сообщений: 1278
SputnikORA
т.е. можно сбросом ALTER SYSTEM FLUSH SHARED POOL

не надо :)

SputnikORA
а дальше TKPROF trace.trc trace.out EXPLAIN=example/example ?

EXPLAIN тоже не надо, реальный план выполнения и так должен быть
18 апр 07, 10:25    [4034834]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
SputnikORA
Guest
evostr
SputnikORA
т.е. можно сбросом ALTER SYSTEM FLUSH SHARED POOL

не надо :)

SputnikORA
а дальше TKPROF trace.trc trace.out EXPLAIN=example/example ?

EXPLAIN тоже не надо, реальный план выполнения и так должен быть


поясни, запутал, а как надо?
18 апр 07, 10:27    [4034843]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
evostr
Member

Откуда: Екатеринбург
Сообщений: 1278
SputnikORA
поясни, запутал, а как надо?

Да, согласен, ввел в заблуждение.
Читать надо так:
автор
чтобы план выполнения туда попал, для этого запрос должен быть разобран в момент трассировки и курсор должен быть закрыт до окончания трассировки.
18 апр 07, 10:31    [4034863]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
scott/tiger
Guest
коллеги,
объясните чтоли и мне - чем не устраивает просто explain plan?
18 апр 07, 10:50    [4034979]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Тем, что возвращаемый им план может не совпадать с реальным
По той же причине не стоит использовать опцию explain= при вызове tkprof
18 апр 07, 10:51    [4034991]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
scott/tiger
Guest
пример или ссылку на баг/фичу можно?
18 апр 07, 10:52    [4035007]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Это не баг -- explain показывается на основании информации, доступной в настоящий момент для конкретных параметрах сессии и т.д.
dbms_stats & no_invalidate
18 апр 07, 10:55    [4035033]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
kennethr
Member

Откуда:
Сообщений: 175
Никого не пытаясь учить: все в курсе, что explain plan всегда делает hard parse?
18 апр 07, 11:02    [4035103]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
scott/tiger
Guest
Ссылка - частный случай в общем, для получения которого нужно постараться.

Если же план запроса меняется от сессии к сессии, то какая разница какой был план в прошлый раз, если в слеющий он может быть другим? :)
18 апр 07, 11:14    [4035225]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Следующий раз может оказаться после пересбора статистики, например
У Кайта, кстати, этот случай приведен
18 апр 07, 11:19    [4035277]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
scott/tiger
Guest
То что план CBO может меняться при сборе статистики или изменении схемы это довольно очевидно.
Если спрашивающий - разработчик или админ, управляющий тем и другим, то
Explain plan дает ответ на настоящий момент. Точно так-же как и trace.
18 апр 07, 11:37    [4035461]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18347
scott/tiger
Если же план запроса меняется от сессии к сессии, то какая разница какой был план в прошлый раз, если в слеющий он может быть другим? :)

Чаще встречается иная картина: параметры сессии, в которой работает приложение, отличаются от таковых в той сессии, с которой работает пользователь explain plan.
18 апр 07, 11:40    [4035498]     Ответить | Цитировать Сообщить модератору
 Re: Как все-таки в Oracle 8 и 9 определить используется индекс при селекте или нет?  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3696
scott/tiger
коллеги,
объясните чтоли и мне - чем не устраивает просто explain plan?

Дядя Том недавно объяснял
18 апр 07, 11:45    [4035547]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить