powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / хумор
6 сообщений из 31, страница 2 из 2
хумор
    #34302603
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
особенно интересно ваша дискуссия смотрится под заголовком "ХУМОР" :))
Вы бы хоть топик сменили, что ли...
...
Рейтинг: 0 / 0
хумор
    #34302882
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilisособенно интересно ваша дискуссия смотрится под заголовком "ХУМОР" :))
Вы бы хоть топик сменили, что ли...

Тему завел, переходим сюда .
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
хумор
    #36256231
Фотография sysmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один Informix
Интересно? они хоть в курсе, что такое Informix?
...
Рейтинг: 0 / 0
хумор
    #36256503
ak-47
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ООО “Информикс”, 2009
Все права защищены

Это вам не это. (с) ДМБ
...
Рейтинг: 0 / 0
хумор
    #36256769
Журавлев ДенисRelic HunterHi
С уважением отношусь к ix. Так справедливости ради, то что он нашел план быстрее не означает, что запрос исполнился быстрее на "серьезных" данных. Я об соотношении parsing/execution/fetching. Как гооворится, лучше день потерять, зато потом за час долететь :)проблемы информикса лежат несколько в перпендикулярной плоскости.

Например в оракле мне притаскивают запрос (обычно запрос несколько сложнее таблиц так на 20 и с пятью коррелированными exists, (встречу проектировщика -- убью тупым топором)):

select *
from a,b
where a.f0=7 and a.f1=b.f1 and func1(a.f3)=0
Возвращает 100 строк
Работает 10 мин, комментирую последний предикат - 0 сек. Т.е. порядок применения предикатов, функцию надо применить в конце, постджойн. Я делаю очень просто:
select * from
(select *
from a,b
where a.f0=7 and a.f1=b.f1
and rownum>0 -- не даем оптимизатору возможности сделать merge, и push_predicate)
where func1(a.f3)=0

В информиксе пришлось бы писать через временные таблицы, и в итоге бы исполнялось 1 сек. Т.е. в информиксе просто нет понятий view merge, predicate pushing, predicate pruning (хотя может оно и есть где-то внутрях).

Я возможно что-то упростил слишком сильно (во внешнем where не вызывается хранимая процедура)
или не понял пример, но вот на 11.50FC5W2 работает

Код: plaintext
1.
2.
3.
4.
5.
6.
select * from
(
 select * from systables st, sysindices si
 where st.tabid = si.tabid
)
where tabid <  100 

и ни каких временных таблиц

варианты типа

Код: plaintext
select a,b,c from  (select ..... ), tab2 where ....

тоже прекрасно работают
...
Рейтинг: 0 / 0
хумор
    #36256836
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яковлев ПавелЯ возможно что-то упростил слишком сильно (во внешнем where не вызывается хранимая процедура)
или не понял пример, но вот на 11.50FC5W2 работает
во первых эта тема труп много лет.
во вторых я как бы в курсе уже года два .

так вот:
select from (select from internal) where

Как выполнить этот запрос? Вариантов масса:
Сделать слияние (merge), т.е. попросту переписать к виду select from internal where
Протолкнуть предикаты для internal внутрь (predicate pushing), т.е. select from (select from internal where)
Выполнить как есть, сначала внутреннюю часть, (сложив во временную таблицу весь результат или построчно без временной) , потом остальное. Ну и еще кучка типа pruning,,,,

Теперь проблема: бывает субд-ы неправильно применяют предикаты, например потому что не умеют оценивать стоимость функций.
Т.е. имеем [select where a and b], если применять предикаты в порядке (a,b) выполнятся будет 0 сек, а если в обратном (b,a), то час. (под a и b понимаются любые конструкции поле=5, >, <, in,exists)

Поэтому придуманы мерзкие хинты типа оракляечьего ordered_predicates.

Так вот в оракле я использую бессмысленную конструкцию rownum>0, которая мне позволяет выкинуть "тяжелые" предикаты во внешний запрос.

Это вообще не проблема оркла или информикса, это мои личные проблемы, типа мне приносят запросы на 8 листов А4, где вплоть до джойна таблиц с помощью функций func1(a.f0)=substr(b.f4), и говорят: "Работает 4 часа, сделай чтоб за 2 сек, пожалуйста".
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Informix [игнор отключен] [закрыт для гостей] / хумор
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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