Oracle. Оптимизация запроса
От: Andy Panda США  
Дата: 18.09.07 13:03
Оценка:
В нескольких запросах приложения, работающего с унаследованой БД, встречается вот такое условие (или подобные ему).

select * from goods g 
where ...
and (app_restr.hasbrandrestriction = 0 or g.mnf_id in (select BrandId from restricted_brands where restricted_brands.restrictionid = app_restr.restrictionid))
...


Один коллега утверждает, что на таких условиях оптимизатор обламывается, и надо их избегать.
Так ли это? Какие есть альтернативы?

Есть ли какое-нибудь средство типа MS SQL Query Analyzer где можно посмотреть примерный план запроса?
... << RSDN@Home 1.2.0 alpha rev. 648>>
Re: Oracle. Оптимизация запроса
От: LuciferArh Россия  
Дата: 18.09.07 13:38
Оценка: 2 (1)
Здравствуйте, Andy Panda, Вы писали:

AP>В нескольких запросах приложения, работающего с унаследованой БД, встречается вот такое условие (или подобные ему).


AP>
AP>select * from goods g 
AP>where ...
AP>and (app_restr.hasbrandrestriction = 0 or g.mnf_id in (select BrandId from restricted_brands where restricted_brands.restrictionid = app_restr.restrictionid))
AP>...
AP>


AP>Один коллега утверждает, что на таких условиях оптимизатор обламывается, и надо их избегать.

AP>Так ли это? Какие есть альтернативы?

Это скажет только план запроса. У меня тоже встречались подобные запросы. Но оптимизатор их вполне проглатывал.

AP>Есть ли какое-нибудь средство типа MS SQL Query Analyzer где можно посмотреть примерный план запроса?


Есть. Гугли TOAD, PLSQL Developer.
С годами я делаюсь все менее терпимым к людям неумным и неумеющим работать свое дело очень хорошо. (с) М. Веллер
Re: Oracle. Оптимизация запроса
От: wildwind Россия  
Дата: 18.09.07 14:30
Оценка: 2 (1)
Здравствуйте, Andy Panda, Вы писали:

AP>Один коллега утверждает, что на таких условиях оптимизатор обламывается, и надо их избегать.

AP>Так ли это? Какие есть альтернативы?

Альтернатива — избегать таких коллег.
(Знять бы еще, что он себе представляет, говоря "оптимизатор обламывается")

AP>Есть ли какое-нибудь средство типа MS SQL Query Analyzer где можно посмотреть примерный план запроса?


SQL*Plus, set autotrace
Re: Oracle. Оптимизация запроса
От: IZM  
Дата: 18.09.07 15:40
Оценка: 2 (1)
Здравствуйте, Andy Panda, Вы писали:

AP>Так ли это? Какие есть альтернативы?

Используйте свои хинты для настройки плана запроса
Собирайте статистику по таблицам — план будет автоматом лучше строится,
хотя встречал запросы которые до 10 000 записей в таблице отрабатывают нормально, если в таблице от 10 000 до 100 000 то криво план строит, а когда больше 100 000 опять нормально
ставьте для простоты хинт Star или Rule очень часто нормально с ними идет отработка запросов.

Так же можно сложные запросы заменить PipeLine функциями, хоть и медленее но надежнее
на простых запросах редко оптимизатор врет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.