Clarion Std vs Clarion SQL

32 views
Skip to first unread message

Анатолий Долидович

unread,
Apr 18, 2025, 8:33:57 AMApr 18
to cla...@googlegroups.com
Здравствуй, Clalist.

Достался мне в наследство программный модуль, который будет жить еще как минимум до 2030 года.
Написан на кларионе 6.3.9058 в формате Single exe еще наверно в 2000 году.
ТЕПЕРЬ использует базу данных MSSQL, раньше - Clarion.
Есть в нем процедура загрузки текстового файла. Меня попросили ее оптимизировать.
За время пути собачка подросла - файл вырос до 59 мегабайт и угрожает стать еще больше.
И попросили у меня провести оптимизацию процедуры загрузки, потому что загрузка начавшись примерно в 8:30, заканчивается в районе 14 часов дня.
Пока ничего кардинально не хочу менять, хотя наврено это бы сильно помогло, но такое потом. Пока есть другие задачи, которые держат в тонусе.
Хочу задать следующий вопрос.
Есть вот такой код в функции:

          if clip(LSC) and sub(LSC,13,9)<>'000000000' and clip(sub(LSC,13,9)) and sub(LSC,1,2)='BY'
            clear(BAZ:record)
            BAZ:ls = clip(LSC)
            set(BAZ:kl4,BAZ:kl4)
            Loop
              next(BAZ)
              if errorcode() then break.
              if clip(BAZ:ls)=clip(LSC) then NA# = 1.
              Break
          . .

Я хочу заменить его на следующий:

if clip(LSC) and sub(LSC,13,9)<>'000000000' and clip(sub(LSC,13,9)) and sub(LSC,1,2)='BY'
  set(BAZ)
  BAZ{prop:SQL}='select * from baz b where b.ls like ''%'&sub(LSC,13,9)&'%''
  next(BAZ)
  if errorcode()=0
    NA#=1
  else
    NA#=0
. .

Будет ли новый фрагмент кода выполняться быстрее чем текущий.
Аналогичных участков в функции импорта несколько, я уже наметил под замену как минимум три штуки, но если выигрыша в быстродействии
не будет, то и мутить не буду. Хотя если даже и поможет, то несильно.
Пока писал это сообщение, назрело одно обходное решение, но оно не из нашей предметной области :).


-- 
С уважением,
 Анатолий                          
mailto:anatoli.d...@asb.by

Vadim Sinyavskiy

unread,
Apr 18, 2025, 8:41:21 AMApr 18
to cla...@googlegroups.com
Особо быстрее не будет, но если сделать так
BAZ{prop:SQL}='select TOP 1 * from baz b where b.ls like ''%'&sub(LSC,13,9)&'%''
то даст ускорение - если сиквельный сервер локальный. Ну и для удаленного будет проще дышать...

пт, 18 апр. 2025 г. в 15:33, 'Анатолий Долидович' via ClaList <cla...@googlegroups.com>:
--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/clalist/1403082752.20250418153338%40asb.by.

Анатолий Долидович

unread,
Apr 18, 2025, 9:01:58 AMApr 18
to cla...@googlegroups.com
Здравствуй, Clalist.

Вадим, большое спасибо за совет. В понедельник напишу тестовую программу, посмотрю тайминги выполнения.
Забыл упомянуть что SQL сервер удаленный.
Поговорил с бизнес-аналитиком... Душиться мне с этим модулем еще как минимум до 2035 года...

-- 
С уважением,
 Анатолий                          
mailto:anatoli.d...@asb.by

Andrey Kuznetsov

unread,
Apr 18, 2025, 10:38:27 AMApr 18
to cla...@googlegroups.com

Давно не брал я в руки Кларион. Вроде есть Stream чтобы не дергать по одной записи?

--

Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.

Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/clalist/829560337.20250418160139%40asb.by.

Alexander Strumensky

unread,
Apr 19, 2025, 5:18:35 PMApr 19
to cla...@googlegroups.com
это не про SQL

Best regards,
  Strumensky Alexander

Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/clalist/004e01dbb06f%248ba3fc40%24a2ebf4c0%24%40gmail.com.

Alexander Strumensky

unread,
Apr 19, 2025, 5:21:39 PMApr 19
to cla...@googlegroups.com
привет

если добавляется много записей - можно ускорить добавлением пачками. я когда-то писал класс для этого - сначала для Pervasive, потом для MS SQL

Best regards,
  Strumensky Alexander

--

Анатолий Долидович

unread,
Apr 21, 2025, 3:09:54 AMApr 21
to cla...@googlegroups.com
Здравствуй, Clalist.

В том-то и дело, что процедура не выполняет постоянной вставки данных из TXT в MSSQL.
Все операции проводятся в другом программном комплексе, а для модуля выгружаются ежедневно для получения специфических документов.
Поэтому при загрузке тпекстового файла там нет простой перезаписи в таблицы MSSQL. Проводится анализ по каждому отдельному счету,
у кого-то операции замещаются, у кого-то нет, в общем, там достаточно сложный алгоритм, который боюсь оптимизировать будет совсем непросто.
Поэтому я благодарен всем за советы. Понятное дело, что без исходного кода никуда, но нам запрещено его публиковать где бы то ни было.
-- 
С уважением,
 Анатолий                          
mailto:anatoli.d...@asb.by

Vladislav Sachkov

unread,
Apr 21, 2025, 4:12:49 AMApr 21
to 'Анатолий Долидович' via ClaList

Здравствуйте, 'Анатолий.


Вы писали 18 апреля 2025 г., 15:33:38:

 

Хранимку напишите на стороне сервера на базе BULK INSERT'a и будет вам щастье.


--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/clalist/1403082752.20250418153338%40asb.by.


-- 
С уважением,
 Vladislav                          mailto:vlad...@list.ru

Vladislav Sachkov

unread,
Apr 21, 2025, 7:55:33 AMApr 21
to 'Анатолий Долидович' via ClaList

Здравствуйте, 'Анатолий.


Так никто не мешает сначала закинуть все во временную таблицу, а потом разбирать эту помойку и переписывать нужное на постоянное место хранения.

 

Вы писали 21 апреля 2025 г., 10:09:48:


--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/clalist/1289732003.20250421100948%40asb.by.

Анатолий Долидович

unread,
Apr 22, 2025, 1:11:56 AMApr 22
to cla...@googlegroups.com
Здравствуйте, Clalist.

Я вчера тестировал разные варианты добавления/удаления записей, и пришел к выводу, что действительно нужно
применять обходно ерешение - закатывать все на локальный SQK сервер, а потом перекидывать таблицы на сеть.
Я про такой вариант бизнес-аналитику по этой задаче написал еще на прошлой неделе. Она обещала подумать,
но пока что обратнеой связи не было.
Насчет BULK INSERTа  - скорее всего он в моей задаче неприменим.
Всем огромное спасибо за мнения!

-- 
С уважением,
 Анатолий                          
mailto:anatoli.d...@asb.by
Reply all
Reply to author
Forward
0 new messages