![]() |
#1 |
Участник
|
Оптимизация рапорта ...
Здраствуйте ,
Пришлось сделать такой рапорт , где нужно отобрать данные >= Дата . Дело в том , что пока знаем две возможности - rangeDate.value(queryRange(fromdate, toDate)) или по value : rangeDate.value(fromdate) . Есть и индекс по нужной дате . Вот если попробуем только value , без queryRange , то быстродействие очень хорошое . С queryRange - уже работает медленно ... ![]() ![]() С уважением , Римантас |
|
![]() |
#2 |
Участник
|
Ничего не понял, честно говоря.
X++: rangeDate.value(queryRange(fromDate, toDate)) X++: rangeDate.value(fromDate) В первом случае получаем fromDate <= rangeDate <= toDate, а во втором rangeDate == fromDate А соответственно, во втором случае, и быстродействие выше, так как данные отбираются только за одну дату. |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от kashperuk
![]() Ничего не понял, честно говоря.
X++: rangeDate.value(queryRange(fromDate, toDate)) X++: rangeDate.value(fromDate) В первом случае получаем fromDate <= rangeDate <= toDate, а во втором rangeDate == fromDate А соответственно, во втором случае, и быстродействие выше, так как данные отбираются только за одну дату. |
|
![]() |
#4 |
Участник
|
|
|
![]() |
#5 |
Участник
|
Боюсь вас расстроить, но queryRange здесь, думаю, совершенно не причем.
Его код доступен в приложении - он просто формирует строку фильтра. Для того, чтобы задать фильтр rangeDate >= fromDate, можно сделать так: X++: qbds.addRange(fieldNum(CustTrans, TransDate)).value(strFmt("%1..", rangeDate)); ![]() |
|
![]() |
#6 |
Участник
|
сколько данных в результате вы получаете? если таблица большая и запросы по дате это основные запросы к данной таблице, то рассмотрите вариант поставить индекс по дате как кластерный
|
|
|
![]() |
||||
Тема | Ответов | |||
Оптимизация класса Tax | 43 | |||
Оптимизация запроса - ranges | 13 | |||
Оптимизация кода с LedgerTrans | 18 | |||
Оптимизация производственного планирования | 19 | |||
Оптимизация запросов | 3 |
|