Lotsia PLM: Форум по семейству систем PLM/PDM/TDM/ERP/Workflow

Для специалистов по внедрению систем, профессиональных администраторов и пользователей.
Текущее время: 23 июл 2018, 20:32

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 26 июл 2007, 12:32 
Не в сети
Активный участник
Аватара пользователя

Зарегистрирован: 24 авг 2006, 08:06
Сообщения: 1646
Откуда: 55.745578,37.665825
Благодарил (а): 8 раз.
Поблагодарили: 3 раз.
Может кому понадобится
Лоция предлагает перебирать дочерние объекты в цикле используя для исключения обработанных объектов - два момента - найти max id и проставить отметку в атрибуте...
но можно же гораздо проще и главное быстрее - искать min id сохранять его в переменной и следующий проход делать по сохраненному значению
например выбрать все объекты с направленной связью
Код:
Current_id=Set(0)
...
sql = Set ('
SELECT min(rw.id) 
  FROM LSDBO.object_reference_view rw,
       lsdbo.tree_link_view tl
 WHERE tl.parent_id =100004656200000
       and tl.link_id =rw.id
       and tl.link_type_id = 11
       and rw.id>'+string(Current_id))
Current_id= Set ( number( f_ExecSQLSelect_2 ( sql,'','')) )
...

зацикливаем
и скорость больше :wink:
и атрибуты целее :wink:

_________________

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный



Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 26 июл 2007, 20:58 
Не в сети
Активный участник
Аватара пользователя

Зарегистрирован: 27 июл 2006, 22:17
Сообщения: 797
Откуда: Москва
Благодарил (а): 11 раз.
Поблагодарили: 12 раз.
Отличная, кстати, мысль!!! Я этим пользуюсь, но не пришло в голову поделиться, думал и так все знают. Но на самом деле, пометка в атрибутах тоже иногда может пригодиться.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 27 июл 2007, 13:10 
Не в сети
Активный участник
Аватара пользователя

Зарегистрирован: 24 авг 2006, 08:06
Сообщения: 1646
Откуда: 55.745578,37.665825
Благодарил (а): 8 раз.
Поблагодарили: 3 раз.
предлагаю еще больше ускориться :wink:
допустим в запросе отбирающем дочерние объекты влепить top25
т.е. отбираем первые 25 id например так (тут простой запрос для примера - но лучше конечно чтобы был сложный)
Код:
tmp = Set ( f_execsqlselect_2 ('
SELECT top 25 rw.id
  FROM LSDBO.object_reference_view rw,
       lsdbo.tree_link_view tl
 WHERE tl.parent_id =100004656200000
       and tl.link_id =rw.id
       and tl.link_type_id = 11','', ',') )

получаем строку из id через запятую
а дальше в цикле вырезаем очередной id и выходим на объект простым и быстрым запросом

tmp=set(left(tmp,',',1))
id = Set ( number(f_ExecSQLSelect_2 ('
SELECT rw.id
  FROM  lsdbo.object_reference_view rw
WHERE rw.id='+string(id),'','') )

т.е. чтобы каждый раз не гонять сложный запрос делаем выборку - кешируем ее, быстро обрабатываем и т.д.
на сложном первом запросе должно работать быстро :wink: :wink: на простом конечно - не имеет смысла - а может и имеет :roll:

_________________

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный



Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB