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

Откуда: Киев
Сообщений: 240
Подскажите или укажите ссылку, где можно почитать - порядок следования условий отбора во WHERE влияет на скорость выполнения запроса или нет?
Т.е., всё равно, в каком порядке писать условия или сначала писать что-то сродни связям таблиц, потом условия на NULL и т.д.? Или, перефразируя, что сначала выполняется при выборке - берется одна строка и для неё проверяются все условия, потом следующая или же выбираются строки для первого условия, потом для второго и т.д.?
27 авг 06, 19:39    [3058818]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116077
В CBO все равно.
В RBO - нет.
27 авг 06, 20:37    [3058884]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL  [new]
contr
Member

Откуда:
Сообщений: 1909
dmidek
В CBO все равно.

И CBO не все равно - не в силах он оценить абсолютно все вариации запроса, и в RBO не так уж "не все равно" - условия классифицированы и обладают определенным приоритетом :)
Короче, единственное более-менее надежное мерило ценностей - это план запроса. Вот его, родного, и надо оптимизировать.
А условия по where гонять - занятие так себе.
27 авг 06, 22:19    [3058995]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116077
contr
dmidek
В CBO все равно.

И CBO не все равно - не в силах он оценить абсолютно все вариации запроса, и в RBO не так уж "не все равно" - условия классифицированы и обладают определенным приоритетом :)

Надо было мне ИМХО написать :-)
Но действительно, за все время работы никогда не помогало изменения порядка условий в WHERE в CBO, а в RBO частенько переставляли.
Пару раз помогал в CBO хинт ORDERED, но по моему убеждению, это был не единственный метод оптимизации.
Я бы свой ответ как тенденцию оставил, иначе начинается полнейший "релятивизм" :-)
27 авг 06, 23:19    [3059064]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL  [new]
contr
Member

Откуда:
Сообщений: 1909
dmidek
Надо было мне ИМХО написать :-)

Да и мне следовало бы - осело в памяти, что RBO "скалярные" условия предпочитает коррелированным подзапросам, а подзапросы - пользовательским функциям.
Не уверен, что быстро найду первоисточник или легко продемонстрирую :)

Но что касается CBO, то в 8i имел место интересный эффект, связанный с partition pruning: если во where присутствовало два условия на ключ секционирования, то разделы выбирались только на основе первого из них. В итоге можно было получить неожиданно высокую ресурсоемкость запроса.
У нас это дело даже внесли в инструкцию по работе с секционированными объектами... Вроде потом поправили, но никто уже не проверял :)
28 авг 06, 00:43    [3059129]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по SQL  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
CBO и порядок условий в WHERE
28 авг 06, 03:07    [3059202]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить