Жсткая подцепка

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Жсткая подцепка

Сообщение KVS » Вт авг 11, 2020 16:12

Товарищи, добрый день.

Есть две таблы (физические, созданы через create table):
1. Analytic (nRec : comp, Code : string, Name: string) with index (i1 = nRec (surrogate,journal));
2. AnalyticSets (nRec : comp, cAnalyt : ref (table Analytic ), Name: string) with index (i1 = nRec (surrogate,journal), i2 = cAnalyt + Name);

В 1 табле где-то 3к записей, во второй 8к.

Есть вьюха:
Код: Выделить всё
create view as
select ANK.nRec
from
  synonym Analytic ANK
, synonym AnalyticSets SETS
where ((
ANK.nRec /==  SETS.cAnalyt  and
'X_300'       ==  SETS.Name
));


В фейсе 1 визуальный элемент - это броуз:

browse brAnk
fields ANK.code; ANK.name;

Так вот фейс открывается за 14 секунд, что очень-очень медленно, и отображает 10 записей.
Вопрос, куда молжно посмотреть, чтобы выяснить что является причиной такой медоенной работы. На стороне SQL Server запрос
Код: Выделить всё
select ANK.* from ANK inner join SETS on SETS.cAnalyt = ANK.nRec and SETS.Name = 'X_300' 
выполняется за доли секунд...
KVS
 
Сообщения: 11
Зарегистрирован: Пн фев 03, 2020 11:38
Reputation point: 0

Re: Жсткая подцепка

Сообщение edward_K » Чт авг 13, 2020 14:08

Посмотрите sil лог.скорей всего у вас запрос разделил я на две части и выполняется на все записи в табле слева, да Ещё и в два прогона. Решить это можно добавив уникальность по индексу в. Таблицу справа. К
edward_K
Заслуженный деятель интернет-сообщества
 
Сообщения: 5164
Зарегистрирован: Вт мар 29, 2005 17:49
Откуда: SPB galaxy spb
Reputation point: 115

Re: Жсткая подцепка

Сообщение KVS » Пт авг 14, 2020 10:06

Благодарю за ответ.
Действительно, лог показал, что запросы разделились.Есть где-нибудь вопзможность почитать про подобные нюансы работы вьюхи?
KVS
 
Сообщения: 11
Зарегистрирован: Пн фев 03, 2020 11:38
Reputation point: 0

Re: Жсткая подцепка

Сообщение edward_K » Пт авг 14, 2020 11:37

Боюсь что нигде.
Тут проблема в том что Атлантис преобразует ваш запрос как хочет и без dsql заставить его идти по другому пути сложно но можно - уникальность индексов, вложенные запросы, view на серверы и так далее.
Я надеялся что join во from сработает по другому, но нет.
В общем самое быстрое в вашем случае будет селект во временную таблицу, возможно поменяв их местами.
Можете ещё попробовать на 5.5.35.6 драйвере.
edward_K
Заслуженный деятель интернет-сообщества
 
Сообщения: 5164
Зарегистрирован: Вт мар 29, 2005 17:49
Откуда: SPB galaxy spb
Reputation point: 115

Re: Жсткая подцепка

Сообщение Den » Пт авг 14, 2020 13:31

Жесткая подцепка порой непредсказуема в атлантисе. Лучше во времянку из Analytic сразу выгрести dsql записи и от них уже пострить вью без жесткой подцепки
А вообще у меня вот так :

Код: Выделить всё
Interface TestJ;

create view
  select
  *
    from katorg k join basedoc b
    where (( k.nrec /== b.corg and 101==b.viddoc))
  ;

Browse Brw1;
  table k;
   fields
    k.name 'name'   : [50],protect;
end;

end.


мгонвенно отображается. (в katorg 1К записей, в basedoc 5К записей, )
Den
Местный житель
 
Сообщения: 1836
Зарегистрирован: Вт мар 29, 2005 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Reputation point: 60

Re: Жсткая подцепка

Сообщение KVS » Пн авг 17, 2020 13:27

Спасибо за ответы. Собственно, пришлось через временную таблицу сделать: dsql с выборкой nRec'ов, результат во времянку, к ней жесткая подцепка соновной таблы. Работает быстро.

Тут проблема в том что Атлантис преобразует ваш запрос как хочет и без dsql заставить его идти по другому пути сложно но можно - уникальность индексов, вложенные запросы, view на серверы и так далее.

Можно как-то создать вьюху на сервере и обращаться к ней посредством вьюхи в випе без обвязки с использованием табличных объектов?
Я так понимаю, что во вьюхе в VIPе доступны только таблицы, которые описаны в словаре или в текущем проекте.
KVS
 
Сообщения: 11
Зарегистрирован: Пн фев 03, 2020 11:38
Reputation point: 0

Re: Жсткая подцепка

Сообщение edward_K » Вт авг 18, 2020 11:40

KVS писал(а):Можно как-то создать вьюху на сервере и обращаться к ней посредством вьюхи в випе без обвязки с использованием табличных объектов?
Я так понимаю, что во вьюхе в VIPе доступны только таблицы, которые описаны в словаре или в текущем проекте.

Я сам не пробовал. но вот какие у меня есть примеры
В сапорте
Код: Выделить всё
/* создадим заглушку View */

sql
create view TNB_EnsurReplPodr
(
  SrcNrec,
  SrcKod,
  SrcName,
  DstNrec,
  DstKod,
  DstName
)
as

select KatPodrSrc.NREC as SrcNrec,
       KatPodrSrc.KOD  as SrcKod,
       KatPodrSrc.NAME as SrcName,
       KatPodrDst.NREC as DstNrec,
       KatPodrDst.kod  as DstKod,
       KatPodrDst.NAME as DstName
from
  KatPodr KatPodrDst
, KatPodr KatPodrSrc
where
(
  KatPodrDst.NRec = KatPodrSrc.Nrec
)
;

На сервере( это под оракл)
Код: Выделить всё
alter session set current_schema="GAL810"
/

create or replace view S$TNB_EnsurReplPodr as

select KatPodrSrc.FNREC as SrcNrec,
       KatPodrSrc.FKOD  as SrcKod,
       KatPodrSrc.FNAME as SrcName,
       KatPodrDst.FNREC as DstNrec,
       KatPodrDst.Fkod  as DstKod,
       KatPodrDst.FNAME as DstName
from
  KatPodr KatPodrDst
, KatPodr KatPodrSrc
, (
......


После этого говорят можно обращаться к TNB_EnsurReplPodr как к обычной таблице.
edward_K
Заслуженный деятель интернет-сообщества
 
Сообщения: 5164
Зарегистрирован: Вт мар 29, 2005 17:49
Откуда: SPB galaxy spb
Reputation point: 115

Re: Жсткая подцепка

Сообщение KVS » Вт авг 18, 2020 12:52

Хммм... Спасибо, буду пробовать.

Подобным образом с вьюхами на стороне сервера я уже работал, однако в VIPе обращался с ними только при помощи iQuery + времянка для выгрузки.
KVS
 
Сообщения: 11
Зарегистрирован: Пн фев 03, 2020 11:38
Reputation point: 0

Re: Жсткая подцепка

Сообщение Den » Вт авг 18, 2020 13:02

Полагаю, на данный момент только из dsql и можно работать с view серверными.
в LOT нельзя объявить такое в секции from (компилятор ругнется). Помоему, когда то видел ПИР на эту тему. Но , наверное, так не сделан он пока.
Den
Местный житель
 
Сообщения: 1836
Зарегистрирован: Вт мар 29, 2005 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Reputation point: 60


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


cron