Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / CR-XI. Уж больно непродуктивно запросы ходят. / 2 сообщений из 2, страница 1 из 1
28.08.2008, 12:59
    #35510650
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-XI. Уж больно непродуктивно запросы ходят.
Есть у меня 2 базы данных, создаю 2 коннекта, и 3 запроса по БД. Ожидаю, что CR выполнит все запросы, а затем приджойнит одно к другому. Как бы не так, CR получает первый запрос, сканирует его и на каждом кортеже вызывает второй запрос. Далее, второй запрос сканируется и на каждом его кортеже вызывается третий запрос. В любом случае, логи сервера сообщают, что сервак просто бомбардируется запросами. Есть какой-нибудь способ попросить кристал как-то иначе сджойнить 3 запроса?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
X:\DATA\AKCIONER\DATA\AKC_DVD.DBC
SELECT
   lic.kod AS lic_id,
   speriod.kod AS kodsperiod,
   akc.date_act AS date_act_akc,
   MAX(lic.name) AS name,
   MAX(NVL(speriod.name, "Не определен период начисления дивидендов")) AS namesperiod,
   SUM(akc.kol_akc) AS kol_akc,
   SUM(akc.sum_dvd) AS sum_dvd,
   SUM(akc.sum_nlg) AS sum_nlg,
   SUM(akc.summa) AS summa
 FROM akc_dvd!lic
    INNER JOIN akc_dvd!akc 
       ON lic.kod = akc.lic_id
    INNER JOIN akc_dvd!speriod 
       ON akc.date_act = speriod.date_act_akc
 WHERE ALLTRIM(lic.pers_id) == "Ф" AND speriod.kod IN ({?speriodlist_})
 GROUP BY  1 ,  2 ,  3 
 ORDER BY  3 ,  4 
 EXTERNAL JOIN curNachAkcDvd.lic_id={?X:\DATA\AKCIONER\DATA\AKC_DVD.DBC: curVedAkcDvd.lic_id} AND curNachAkcDvd.kodsperiod={?X:\DATA\AKCIONER\DATA\AKC_DVD.DBC: curVedAkcDvd.kodsperiod}


X:\DATA\AKCIONER\DATA\AKC_DVD.DBC
SELECT
   Svedkass.lic_id,
   speriod.kod AS kodsperiod,
   Vedkass.date_act_akc,
   Vedkass.kodhddoc,
   SUM(Svedkass.summa) AS summa
 FROM akc_dvd!vedkass
    INNER JOIN akc_dvd!svedkass 
       ON Vedkass.kod = Svedkass.vedkass_id AND Svedkass.nepoluchil = .F.
    INNER JOIN akc_dvd!speriod 
       ON Vedkass.date_act_akc = speriod.date_act_akc
 WHERE vedkass.kodhddoc >  0 
 GROUP BY  1 ,  2 ,  3 ,  4 
 EXTERNAL JOIN curVedAkcDvd.lic_id={?X:\DATA\AKCIONER\DATA\AKC_DVD.DBC: curNachAkcDvd.lic_id} AND curVedAkcDvd.kodsperiod={?X:\DATA\AKCIONER\DATA\AKC_DVD.DBC: curNachAkcDvd.kodsperiod} AND curVedAkcDvd.kodhddoc={?PostgreSQL  8  Unicode: curVedPlat.kod}


PostgreSQL  8  Unicode
SELECT
   hddoc.kod,
   hddoc.snumber,
   (CASE WHEN TRIM(COALESCE(hddoc.snumber, '0')) <> '' THEN coalesce(to_number(hddoc.snumber,'999999999.99'), 0 ) ELSE '0' END)::numeric( 15 , 2 ) AS nnumber,
   hddoc.begdata,
   hdpldoc.kod AS kodhdpldoc,
   hdpldoc.summa::numeric( 20 , 2 ) AS summa,
   (CASE WHEN hddoc.kodtype =  64  THEN 'р/с' WHEN hddoc.kodtype =  109  THEN 'касса' ELSE '' END)::char( 5 ) AS sposobvipl,
   hdpldoc.debet,
   hdpldoc.kredit
   FROM hddoc
   INNER JOIN hdpldoc
      ON hddoc.kod = hdpldoc.kodhddoc
   WHERE hddoc.kodtype IN ( 64 , 109 )
         AND hddoc.begdata BETWEEN {?minendsperiod_} AND {?_enddate}
   ORDER BY hddoc.begdata, nnumber
 EXTERNAL JOIN curVedPlat.kod={?X:\DATA\AKCIONER\DATA\AKC_DVD.DBC: curVedAkcDvd.kodhddoc}
...
Рейтинг: 0 / 0
29.08.2008, 10:59
    #35512476
kleine muk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CR-XI. Уж больно непродуктивно запросы ходят.
Может попробовать на основе запросов сделать вьюхи (или процедуры без параметров),
и уже к вьюхам коннектиться из Кристала
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / CR-XI. Уж больно непродуктивно запросы ходят. / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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