• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Формула Вида

Gandliar

Lotus Team
16.02.2004
556
26
BIT
40
Подскажите пожалуйста, как лотус использует формулу отбора для построения вида

например у меня есть вид с формулой

SELECT form="a" & p="1" & o="0"

Если к примеру 90% документов имеют форму "a", 99% документов имеют p="1" и всего лишь 10% документов имеют o="0"

будет ли быстрее строиться вид с формулой

SELECT o="0" & form="a" & p="1"

или с такой формулой

SELECT @if(o="0"; @if(form="a"; @if(p="1"; @true; @false); @false); @false)

или разницы нет.

Заранее благодарю.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
ммм, если логически:
SELECT o="0" - отберет сначала все документы в базе, где есть такое.
& form="a" - отберет из отобранного те, у которых данная форма.
& p="1" - еще менее сузит поиск.

Но формула отбора работает целиком для каждого документа и возвращает True или False.
Так что... Даже если и работает согласно логике, то можно заметить на больших объемах только.
Можно поэкспериментировать, но думаю результат предсказуем.
 

Gandliar

Lotus Team
16.02.2004
556
26
BIT
40
ммм, если логически:
SELECT o="0" - отберет сначала все документы в базе, где есть такое.
& form="a" - отберет из отобранного те, у которых данная форма.
& p="1" - еще менее сузит поиск.

Но формула отбора работает целиком для каждого документа и возвращает True или False.
Так что... Даже если и работает согласно логике, то можно заметить на больших объемах только.
Можно поэкспериментировать, но думаю результат предсказуем.

накопал на сайте ibm

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

Form = "Report" & ( Sections = "Financials" | Total > 10000)


сначала проверяет, является ли форма отчетом, и только при истинности этого утверждения проверяет остальную часть выражения. В макроязыках (и в LotusScript) логические операторы так не работают. Всегда вычисляются обе части выражения. Поэтому, если вычисление второй части требует больших затрат, возможно лучше будет выполнить свою собственную формулу с "ленивой логикой" следующим образом:

@If(Form = "Report"; Sections = "Financials" | Total > 10000; @False)


Функция @If выполняется дольше, чем оператор &, но если можно использовать ее, чтобы избежать ненужного вычисления каких-либо затратных функций, вы выиграете в конечном итоге.


============================

Вот как бы точно проверить скорость.


и ускорит ли обязательное включение формы в формулу отбора в случае если включена птичка на базе optimize document table map
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
Вот я тоже это видел, затем увидел, что формула вида работает для каждого документа.

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

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