Не выдержало сердце, помогите
От: Earl  
Дата: 17.01.02 15:24
Оценка:
Писал небольшой проект для планового отдела и выбрал INTERBASE думал
сделаю простенькую базу и буда клепать отчеты.
Все было хорошо пока не стал делать сложные запросы (не особо но)
представление типа (или такой запрос не важно)
CREATE VIEW V_CONTRACT(CODE,NAME,...) AS SELECT C.CODE, C.NAME, ...
FROM EXECUTORS_LIST EL
INNER JOIN EXECUTORS E ON (EL.CODE_EL = E.CODE_EL)
RIGHT OUTER JOIN PHASE P ON (E.CODE = P.CODE) AND (E.CODE_P =
P.CODE_P)
RIGHT OUTER JOIN CONTRACT C ON (P.CODE = C.CODE)
INNER JOIN CUSTOMERS CS ON (C.CUSTOMER = CS.CODE_CS)
INNER JOIN TYPE_CUSTOMERS TC ON (CS.CODE_TC = TC.CODE_TC)
;
это бы очень помогло строить отчеты.
В самых главных табличках не более 200 записей, в справочниках до 10
Результат запроса 300 записей!!! К этому обзору нужно часто обращаться
Interbase 5.5 УМИРАЕТ на ~3 мин (CEL 400/256 ram/ NT40WS)!!!
препробовл все индексы, оптимизацию плана ... не знаю что делать,
приходиться писать 12 этажные закросы на каждый конкретный случай

Сконвертировал в ORACLE8 на убитом сервере (Pentium 200, 64 ram,
NT40WS) все выполняется
МГНОВЕННО!!!!!!!!!!!!!!

А проект уже написан ЧТО ДЕЛАТЬ, подскажите может я глючу
--
Best regards
Re: Не выдержало сердце, помогите
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 18.01.02 06:30
Оценка:
Здравствуйте Earl, Вы писали:

Мои (несуразные) мысли.
1 Не напрягай IB запросами такого рода. Из своего опыта — гораздо эффективнее переписать все это том же VBA. Было время, когда это привело к увеличению скорости обсчета на 2 порядка.
2 Обратись на специализированную конференцию по Interbase — news://forums.demo.ru/epsylon.public.interbase

E>А проект уже написан ЧТО ДЕЛАТЬ, подскажите может я глючу

Веревка есть? А так, добро пожаловать в общество самого прогрессивного и не требовательного к ресурсам и мозгам администраторов SQL сервера

PS. Тут тривиальное пересечение по трем таблицам (но на 600MB базе) приводит его в ступор, а ты VIEW от SP считаешь тривиальным
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: Не выдержало сердце, помогите
От: PeterG  
Дата: 18.01.02 08:03
Оценка:
Здравствуйте Earl, Вы писали:

E>Писал небольшой проект для планового отдела и выбрал INTERBASE думал

E>сделаю простенькую базу и буда клепать отчеты.
E>Все было хорошо пока не стал делать сложные запросы (не особо но)
E>представление типа (или такой запрос не важно)
E>CREATE VIEW V_CONTRACT(CODE,NAME,...) AS SELECT C.CODE, C.NAME, ...
E>FROM EXECUTORS_LIST EL
E> INNER JOIN EXECUTORS E ON (EL.CODE_EL = E.CODE_EL)
E> RIGHT OUTER JOIN PHASE P ON (E.CODE = P.CODE) AND (E.CODE_P =
E>P.CODE_P)
E> RIGHT OUTER JOIN CONTRACT C ON (P.CODE = C.CODE)
E> INNER JOIN CUSTOMERS CS ON (C.CUSTOMER = CS.CODE_CS)
E> INNER JOIN TYPE_CUSTOMERS TC ON (CS.CODE_TC = TC.CODE_TC)
E> ;
E>это бы очень помогло строить отчеты.
E>В самых главных табличках не более 200 записей, в справочниках до 10
E>Результат запроса 300 записей!!! К этому обзору нужно часто обращаться
E>Interbase 5.5 УМИРАЕТ на ~3 мин (CEL 400/256 ram/ NT40WS)!!!
E>препробовл все индексы, оптимизацию плана ... не знаю что делать,
E>приходиться писать 12 этажные закросы на каждый конкретный случай

E>Сконвертировал в ORACLE8 на убитом сервере (Pentium 200, 64 ram,

E>NT40WS) все выполняется
E>МГНОВЕННО!!!!!!!!!!!!!!

E>А проект уже написан ЧТО ДЕЛАТЬ, подскажите может я глючу

E>--
E>Best regards

А индексы у Вас по тем полям, по которым идет JOIN, построены?
Re: Не выдержало сердце, помогите
От: zaiats_2k Россия  
Дата: 12.02.02 14:48
Оценка:
Сие есть просто страшный глюк.
В стародавние времена я тоже с этим столкнулся разочек, и именно на IB 5.5. Дня два пытался понять в чём дело, а на третий, решив что проекту кирдык и денежек мне уже не видать, пошёл и напился в хлам. Явившись же домой в 4 утра, пьянющий, сел за комп и случайно попробовал использовать для объединения таблиц не JOIN-, а WHERE-синтаксис. И всё заработало со свистом. Вот такая вот история...

З.Ы. Писалось всё это дело на Delphi 5, и потом мне говорили что в каком-то из Update Pack к Delphi сей глюк был исправлен, но проект уже был сдан, деньги получены и проверять я это не стал.
0 программистов ругал сердитый шеф,
потом уволил одного, и стало их FF!
Re: Не выдержало сердце, помогите
От: Аноним  
Дата: 14.02.02 05:05
Оценка:
Здравствуйте Earl, Вы писали:

E>Писал небольшой проект для планового отдела и выбрал INTERBASE думал

E>сделаю простенькую базу и буда клепать отчеты.
E>Все было хорошо пока не стал делать сложные запросы (не особо но)
E>представление типа (или такой запрос не важно)
E>CREATE VIEW V_CONTRACT(CODE,NAME,...) AS SELECT C.CODE, C.NAME, ...
E>FROM EXECUTORS_LIST EL
E> INNER JOIN EXECUTORS E ON (EL.CODE_EL = E.CODE_EL)
E> RIGHT OUTER JOIN PHASE P ON (E.CODE = P.CODE) AND (E.CODE_P =
E>P.CODE_P)
E> RIGHT OUTER JOIN CONTRACT C ON (P.CODE = C.CODE)
E> INNER JOIN CUSTOMERS CS ON (C.CUSTOMER = CS.CODE_CS)
E> INNER JOIN TYPE_CUSTOMERS TC ON (CS.CODE_TC = TC.CODE_TC)
E> ;
E>это бы очень помогло строить отчеты.
E>В самых главных табличках не более 200 записей, в справочниках до 10
E>Результат запроса 300 записей!!! К этому обзору нужно часто обращаться
E>Interbase 5.5 УМИРАЕТ на ~3 мин (CEL 400/256 ram/ NT40WS)!!!
E>препробовл все индексы, оптимизацию плана ... не знаю что делать,
E>приходиться писать 12 этажные закросы на каждый конкретный случай

E>Сконвертировал в ORACLE8 на убитом сервере (Pentium 200, 64 ram,

E>NT40WS) все выполняется
E>МГНОВЕННО!!!!!!!!!!!!!!

E>А проект уже написан ЧТО ДЕЛАТЬ, подскажите может я глючу

E>--
E>Best regards

Interbase не любит такие вещи как right outer join, избавься от них — должно заработать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.