Здрасьте, Мерлин! Здрасьте, DVKalugin!
Спасибо за такой всеобъемлющий диспут на мою скромную тему!
Я работаю в IBExpert, а не в Делфях или еще в какой визуал-среде.
Касательно самого запроса.
SELECT AL.PART, AL.NAIMENOVAN, AL.PRODUCER, AL.GEN,
CLIENTS.MANAGER, CLIENTS.REGION, CLIENTS.CITY,
JURMAT."ppol", JURMAT."nomnu",
"GetYear"(jurmat.dat) as god , "WeekOfYear"(jurmat.dat) as num_week,
sum(jurmat."kol"),
sum(jurmat."sale_price")
FROM AL
RIGHT OUTER JOIN JURMAT ON (AL.INV = JURMAT."nomnu")
LEFT OUTER JOIN CLIENTS ON (JURMAT."ppol" = CLIENTS.PSEVDONIMK)
where jurmat."ndoc"='Íàêëàäíàÿ' and jurmat."mscet"='21'
group by AL.PART, AL.NAIMENOVAN, AL.PRODUCER, AL.GEN, CLIENTS.MANAGER,
CLIENTS.REGION, CLIENTS.CITY, JURMAT."ppol", JURMAT."nomnu" ,
"GetYear"(jurmat.dat), "WeekOfYear"(jurmat.dat)
;
"GetYear" и "WeekOfYear" - UDF-функции, написанные нашим программистом, возвращающие значения года и номера недели года. Конечно, есть свои функ. типа "EXTRACT (YEAR/MONTH FROM <table_name>) AS <ИМЯ ПСЕВДОНИМА>". но в тексте создания представления
CREATE VIEW AL_JUR_CL(
"part",
"naimenovan",
"producer",
"gen",
"manager",
"region",
"city",
"ppol",
"nomnu",
"god",
"num_week",
"kol",
"su")
AS
SELECT AL.PART, AL.NAIMENOVAN, AL.PRODUCER, AL.GEN,
CLIENTS.MANAGER, CLIENTS.REGION, CLIENTS.CITY,
JURMAT."ppol", JURMAT."nomnu",
"GetYear"(jurmat.dat) as god , "WeekOfYear"(jurmat.dat) as num_week,
sum(jurmat."kol"),
sum(jurmat."sale_price")
FROM AL
RIGHT OUTER JOIN JURMAT ON (AL.INV = JURMAT."nomnu")
LEFT OUTER JOIN CLIENTS ON (JURMAT."ppol" = CLIENTS.PSEVDONIMK)
where jurmat."ndoc"='Накладная' and jurmat."mscet"='21'
group by AL.PART, AL.NAIMENOVAN, AL.PRODUCER, AL.GEN, CLIENTS.MANAGER,
CLIENTS.REGION, CLIENTS.CITY, JURMAT."ppol", JURMAT."nomnu" ,
"GetYear"(jurmat.dat), "WeekOfYear"(jurmat.dat)
;
они почему то не работают...
Вот, честно, не знаю с чем это связанно, может IBExpert кривоватый. но это факт... Отдельно все компилируется и выполняется, но совместно с телом создания представления не фурычит.
Индексы я поставил на поля:
табл. AL - INV, PART
табл. CLIENTS - PSEVDONIMK
табл. JURMAT - DAT, NOMNU
План:
PLAN SORT (JOIN (JOIN (JURMAT NATURAL,AL INDEX (_IDX3)),CLIENTS INDEX (CLIENTS_IDX1)))
вот...
В принципе, все работает... но очень медленно, о-о-о-о-о-очень!
Поэтому у меня еще вот каукие вопросы:
1. Нет ли на ваш почтенный и умудренный (бесчуственный

) взгляд лишних индексов, притормаживающих выполнение запроса?
2. Считаете ли вы что с моим IBExpert'ом что-то неладное или можно забить на эту фигню?
Однако, иногда приходится прибегать к помощи нашего штатного программиста. Он в основном работатет под ORACLE, но и на IB он тоже многое сделал... Так вот, на его машине все работает очень быстро и почти что идеально... Но при попытке написания в моей версии IBExpert у него постоянно появляются непонятки по поводу того как мой IBExpert ведет себя в плане синтаксиса. Может дело все в том, что опция "Всегда приводить имена объектов к верхнему регистру" у него не помечена...
Вот, про статистику индексов чичас не могу написать, я не могу сейчас вспомнить где я ее видел. Я еще тока начинаю, так что до таких премудростей я еще не дошел.
А пока, откланиваюсь почтенно! Пишите если еще что надо рассказать!
С уважением, Dinya