powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Интилигентность оптимайзера, база без хинтов - реальность?
10 сообщений из 260, страница 11 из 11
Интилигентность оптимайзера, база без хинтов - реальность?
    #35462539
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg0 чя321за запросы с %% яйца отстреливать надо.
интересное заявление, а сравните-ка такое, например, для DB2 AS400 V5R2M0:
f1 like '%pupkin'
и
substr(f1, LENGTH(f1)-6, 6)='pupkin'
(и про RIGHT не вспоминайте - нету его. если не путаю, то только в V5R3M0 появился)
я уже молчу, про очевидные случаи, когда без like просто не обойтись
чя321 , надо полагать, имел в виду, что фамилию надо держать в отдельном поле и пользоваться f1 = 'pupkin' вместо приведённого выше. В данном конкретном случае и я так думаю, потому что это простой случай, но в общем... мы же живём в реальном мире и временами идём на компромиссы.

У Кайта я видел занятный примерчик на тему компромиссов. Юзер вводит произвольную строку, и она ищется в некоем справочнике, и это может содержаться в названии фирмы, или имени, или фамилии, или номере телефона, или в чём-то ещё - различий не делается. Люди пользуются этим поиском очень активно.

Самым лучшим, по словам Кайта, вариантом оказался самый тупой. Для справочника создали "индекс" - временную таблицу с двумя полями - в одном ссылка на строку справочника, в другом поле сконкатенировали поля той строки справочника. И поиск в этом при помощи like '%%'.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35462712
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa riman Author the new one
я могу знать, что %пупкиных% в t1 для тех t2, у которых col='V1' как грязи и начинать надо с t2, а вот, скажем, %пипкиных% у меня, наоборот, с гулькин нос и начинать надо с t1. Этот пример первое, что пришло в голову; очень странно, что это само собой разумеющееся соображение столь упорно отрицалось. Кстати, от него еще более успешно отмахивается постгрес, что наводит на нехорошие мысли.
А было такое, чтобы оптимизатор с соборанной статистикой, ошибался в селективности "пипкиных" и "V1"? Можете привести жизненный пример?

Не, ну лучше было приводить пример типа
Код: plaintext
1.
2.
3.
4.
5.
select t1.id from tbl1 t1, tbl t2 
  where 
        t1.col = ? 
  and t2.col = ?
  and t1.id=t2.id


Я, собственно, хотел привести подобный пример, но опасался неплодотворной дискуссии на тему "а вот сервер ведет статистику для каджой колонки", и для простоты взял случай, когда такой статистики заведомо нет. Промахнулся не хуже оптимизатора - в результате посыпались предложения "отстрелить яйца за like %%" и "не, ну бывает все-таки".
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35462970
Serg0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Author the new one Victor Metelitsa riman Author the new one
я могу знать, что %пупкиных% в t1 для тех t2, у которых col='V1' как грязи и начинать надо с t2, а вот, скажем, %пипкиных% у меня, наоборот, с гулькин нос и начинать надо с t1. Этот пример первое, что пришло в голову; очень странно, что это само собой разумеющееся соображение столь упорно отрицалось. Кстати, от него еще более успешно отмахивается постгрес, что наводит на нехорошие мысли.
А было такое, чтобы оптимизатор с соборанной статистикой, ошибался в селективности "пипкиных" и "V1"? Можете привести жизненный пример?

Не, ну лучше было приводить пример типа
Код: plaintext
1.
2.
3.
4.
5.
select t1.id from tbl1 t1, tbl t2 
  where 
        t1.col = ? 
  and t2.col = ?
  and t1.id=t2.id


Я, собственно, хотел привести подобный пример, но опасался неплодотворной дискуссии на тему "а вот сервер ведет статистику для каджой колонки", и для простоты взял случай, когда такой статистики заведомо нет. Промахнулся не хуже оптимизатора - в результате посыпались предложения "отстрелить яйца за like %%" и "не, ну бывает все-таки".

А вопрос-то от riman остался...
и сводится все к простой вещи - да, возможны ситуации, достаточно частные, когда оптимизатор сильно "гадит" и ручная оптимизация дала бы лучший результат.
НО это частности, а в общем? Не возможно вести статистику вместо сервера в голове программера и надеяться, что он знает, что с ней делать - посмотрите на это с точки зрения IBM или админа сервера для которого пишут сотни программеров самой разной квалификации.

Было бы здорово, уметь полностью отключать оптимизатор для отдельных запросов, но в качестве исключения!
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35462989
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Author the new oneЯ, собственно, хотел привести подобный пример, но опасался неплодотворной дискуссии на тему "а вот сервер ведет статистику для каджой колонки", и для простоты взял случай, когда такой статистики заведомо нет. Промахнулся не хуже оптимизатора - в результате посыпались предложения "отстрелить яйца за like %%" и "не, ну бывает все-таки".

Ну, ведёт, но будущее предвидеть всё равно не может. Ну, можно строить план по первому набору значений параметров или по каждому набору, что тоже зло. С другой стороны, у меня запросцы-то обычно посложнее будут, и их много, и если я буду заниматься хинтованием...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35463031
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor MetelitsaНе, ну лучше было приводить пример типа
Код: plaintext
1.
2.
3.
4.
5.
select t1.id from tbl1 t1, tbl t2 
  where 
        t1.col = ? 
  and t2.col = ?
  and t1.id=t2.id
Если кому интересно, то для такого примера в db2 есть как раз oracle-like (в том смысле, что в тексте запроса пишется) хинт selectivity .
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35463074
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О!

Ну, это, конечно, должно быть покруче указания join order или index, но, когда я об этом вычитал, оно у меня почему-то не работало (якобы ошибка в синтаксисе; разумеется, я не забыл про db2set и фикспаки), поэтому я просто выкинул это из головы. Надо бы проверить на теперешней версии.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35463098
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein Victor MetelitsaНе, ну лучше было приводить пример типа
Код: plaintext
1.
2.
3.
4.
5.
select t1.id from tbl1 t1, tbl t2 
  where 
        t1.col = ? 
  and t2.col = ?
  and t1.id=t2.id
Если кому интересно, то для такого примера в db2 есть как раз oracle-like (в том смысле, что в тексте запроса пишется) хинт selectivity .

Прикольно. AS/400 как всегда обошли стороной, как я понял? :).
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35463187
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rimanПрикольно. AS/400 как всегда обошли стороной, как я понял? :).Оно там своей жизнью живет, иногда и весьма интересной.
Тут почитайте.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35463576
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa[quot Author the new one]Ну, ведёт, но будущее предвидеть всё равно не может. Ну, можно строить план по первому набору значений параметров или по каждому набору, что тоже зло. С другой стороны, у меня запросцы-то обычно посложнее будут, и их много, и если я буду заниматься хинтованием...
Ну никто и не говорит, что оптимизатор - это неизбывное зло, совсем наоборот. Но иногда он все делает как надо, но неправильно .
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #35464140
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinОно там своей жизнью живет, иногда и весьма интересной.
Тут почитайте.
Спасибо! Давно ждал индексы по функциям - сбылась мечта идиота! :).
...
Рейтинг: 0 / 0
10 сообщений из 260, страница 11 из 11
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Интилигентность оптимайзера, база без хинтов - реальность?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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