Медленное открытие вьюхи

azat20

Well-Known Member
22.07.2008
244
0
#1
Добрый день!
Проблема такая. в документе есть мультивалуе поле.Мне надо получить в разных столбцах разные части строки из этого поля.Делаю с использованием значений столбцов ($2).Ну а в столбцах для отображения данных примерно такие значения @ToNumber(@Left(@MiddleBack($23;" ";" ");2)). Как сделать чтобы вьюха открывалась шустрее?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 790
42
#2
чем ньше операций в столбцах - тем быстрее будет работать :D
 

abbatik

Well-Known Member
Lotus team
20.10.2008
277
0
#3
Добрый день!
Проблема такая. в документе есть мультивалуе поле.Мне надо получить в разных столбцах разные части строки из этого поля.Делаю с использованием значений столбцов ($2).Ну а в столбцах для отображения данных примерно такие значения @ToNumber(@Left(@MiddleBack($23;" ";" ");2)). Как сделать чтобы вьюха открывалась шустрее?

Как вариант, заведи 2 вычисляемых поля скрытых на форме или формируй их при закрытии документа. А в виде используй эти поля, должно работать существенно быстрее, ибо такие преобразования в столбце как у тебя могут (в зависимости от кол-ва документов) очень существенно замедлять процесс открытия вьюхи.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#4
А я что-то не замечал падения производительности. По-моему, использование имени столбца в формулах наоборот увеличивают быстродействие.
Может проблема в конкретной формуле(типа @Now)?
 

abbatik

Well-Known Member
Lotus team
20.10.2008
277
0
#5
А я что-то не замечал падения производительности. По-моему, использование имени столбца в формулах наоборот увеличивают быстродействие.
Может проблема в конкретной формуле(типа @Now)?
Дядь, ты че? :)
Сам подумай, что быстрее вывести значение из поля, или например, взять поле, отрезать от него символы, перемешать сделать текстовым и вывести..

Понятно, что разница заметна на большом кол-ве документов.

Ну еще, конечно, зависит от того когда строится индекс вида. Но в общем зависимость относительная, потому как его все равно надо переодически перестраивать :)
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#6
Дядь, ты че? :)
Сам подумай, что быстрее вывести значение из поля, или например, взять поле, отрезать от него символы, перемешать сделать текстовым и вывести..
Да с этим я не спорю. Это самый быстрый вариант. :)
Я про то, что если в каком-то столбце мы уже вывели поле и обработали, то в другом столбце лучше обратиться к этому столбцу по его имени.
Сколько должно быть документов, чтобы тормозило? У меня есть обработки гораздо круче, но всё равно быстро открывается.
 

TIA

:-)
Lotus team
15.05.2009
790
3
#7
Чаще проблемы со скоростью открытия вида возникают не от сложности формул колонок, а от следующих факторов:


1) Малый процент доступных для текущего пользователя по правам документов. Серверу требуется перебрать много записей индекса, чтоб набрать 2 страницы вида, передаваемых пользователю.
2) Включённая галка "Do not show empty categories". Крайне вредна. Требуется перебрать все записи категории на предмет доступности пользователю.
3) Много одновременных обращений к виду на чтение/запись, т.к. индекс блокируется целиком. До сорока запросов на чтение ожидают завершения записи. Запись требует эксклюзивного доступа. Т.е. когда велика вероятность взаимных блокировок.
4) Большой объём данных, отображаемый в виде. Много колонок. Большие значения.
5) Частая модификация большого процента документов БД. Из-за чего требуется обновление индекса. Лечится, если сделать вид обновляемым не автоматически, а с интервалом "Auto at most every...".
6) Как уже говорили, использование временнЫх функций @Now и @Today. Т.к. требует полного перестроения индекса.

Есть и ещё, но перечислил основные. Проверьте, может одно из них - Ваш случай.
 
Симпатии: Понравилось magistr

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#10
TIA, прально!
Истина от повторения не тускнеет :)
 

Constantin A Chervonenko

Well-Known Member
Lotus team
30.05.2006
1 334
4
#12
Сам подумай, что быстрее вывести значение из поля, или например, взять поле, отрезать от него символы, перемешать сделать текстовым и вывести..
Фигня!
Эти все вычисления производятся при добавлении док-та в индекс (ну и при view.Rebuild/Refresh), а не при выдаче на экран
 

abbatik

Well-Known Member
Lotus team
20.10.2008
277
0
#13
Фигня!
Эти все вычисления производятся при добавлении док-та в индекс (ну и при view.Rebuild/Refresh), а не при выдаче на экран
Если вы повнимательнее посмотрите мой пост, там чуть ниже написано "Ну еще, конечно, зависит от того когда строится индекс вида."

Это именно то, о чем вы говорите.

И к тому же, даже если индекс и не строится немедленно, эта операция все равно занимает большее время, чем аналогичная без формул.

А вообще многое зависит от того, для чего это нужно.