• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

@dblookup Vs Notesvew.getdocumentbykey(getalldocumentsbykey)

  • Автор темы Darker
  • Дата начала
D

Darker

Предположим есть задача, есть коллекция документов. Нужно пройтись по каждому документу этой коллекции и взять по ключу(из представления, в где не так уж часто что-то меняется) другой документ, чтобы получить значения из некоторого поля найденного документа.
есть два способа:

1. Традиционный
Код:
'view - представление, отсортированное по первому столбцу
...
While Not doc is Nothing
set findDoc=view.GetDocumentByKey(cstr(doc.Key1(0)))
myFielvalue=findDoc.MyField
set doc=col.GetNextDocument(doc)
Wend

2. Экспериментальный
Код:
...
While Not doc is Nothing
myFielvalue=Evaluate({@DbLookup("":"ReCache";"MyServer\\My":"MyDB.NSF"; "MyView";"}+cstr(doc.Key1(0))+{";"MyField")})
set doc=col.GetNextDocument(doc)
Wend
 
M

morpheus

есть 3й метод


моё мнение 1й вариат - лучше

мой совет: проверте на секундомере
 
A

Akupaka

1-й. Если нет особой надобности, то не надо лепить преобразования из одного языка в другой.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
быстрее будет - не получать ключ из дока, а брать из индекса вьюшки
т.е. получать GetEntryByKey и у него ColumnValues(...)
 
T

turumbay

На сколько? )) При использовании ViewEntry документ уже закеширован в ней? Если нет, то есть смысл, если да - равнозначно.
объективных цифр нету, но по ощущениям - быстрее минимум на порядок.
lmike прав: получение значение непосредственно из индекса - самый шустрый вариант.
 
T

turumbay

При использовании ViewEntry документ уже закеширован в ней?
А на этот вопрос у кого-нить есть ответ? :what?:
документ - нет. а значение поля - да.
речь идет именно о случае, когда нужное поле есть в индексе.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
А на этот вопрос у кого-нить есть ответ? :what?:
с докуменнтом из энтриса! всё будет медленнее (это проверялось)
т.е. получение дока из энтриса медленнее, чем получение дока из колекции, причём существенно
но в данном случае, этой необходимости нет
и нужно использовать индекс
в варианте работы с сервером (не с локальной базой) различие м.б. очень существенным (в разы)
ссылку я здесь приводил (да и собственный опыт есть)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
возможно представление не отображает значение необходимого поля
и что же ему мешает (кроме странных фантазий девелупера) - не надо выдумывать проблемы и формулировать общие случаи, приведён конкретный код, в нем "ничего" не мешает расширить вьюшку колонкой
вот здесь While Not doc is Nothing сделать энтрисы
 
D

Darker

"странные фантазии девелупера" экономят место на диске, за счет невключения в представление лишней информации
 
A

Akupaka

документ - нет. а значение поля - да.
речь идет именно о случае, когда нужное поле есть в индексе
Это понятно. Вопрос был именно в том, что если я получаю из вида ентри, то когда инициализируется его свойство .Документ в момент первого обращения в этому свойству или же еще на стадии инициализации объекта ентри.

"странные фантазии девелупера" экономят место на диске, за счет невключения в представление лишней информации
Тут правы все стороны :what?: Просто нужно искать оптимальное соотношение наличия инфы и скорости отработки некоторого функционала.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
"странные фантазии девелупера" экономят место на диске, за счет невключения в представление лишней информации
есть такое понятие - ошибки проектирования, и подобная "экономия", чаще всего, оборачивается часами ожидания результатов обработки конечным пользователем...
Вы в курсе цен на мб, для ХДД, а цена рабочего времени сотрудников?...
не ну конечно - бывают упертые... разрабы, только для чего задавать вопрос по оптимизации времени, если потом отрицать её необходимость, ссылаясь на малозначимые величины, в контексте обсуждения? :what?:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!