|
01.10.2020, 13:35 | #1 |
Участник
|
Форма ЖБД. Акс2012. Быстродействие
В жбд у нас записей в десятках миллионах. Общая форма (не та что по конкретной записи, а та что в администрировании) открывается очень долго, поиск по ней соответственно тоже(.
Как я понимаю проблема в том, что на DS SysDatabaseLog свойство CrossCompanyAutoQuery = true. Оно дает к селекту на гриде WHERE (PARTITION=?) ORDER BY T1.TABLE_,T1.LOGRECID,T1.CREATEDDATETIME OPTION(FAST 20). Т.е. сортировка по порядку для которого индекса нет. При вызове ЖБД на конкретной записи поиск тоже далеко не оптимальный WHERE ((PARTITION=?) AND ((TABLE_=?) AND (LOGRECID=?))). А индекс то на начинается с PARTITION, DATAAREAID Вопрос. Что можно сделать минимальными затратами, но не меняя функциональность формы. Может с индексами можно сделать чтото? |
|
01.10.2020, 17:33 | #2 |
Участник
|
Порядок полей в Where не влияет.
Смотрите на сортировки. Самый простой вариант - подпилить форму чтобы при открытии из меню (когда element.args().record() пустой) ставился фильтр "0" на поле LOGRECID. Тогда открываться будет быстро. А вы потом все равно свой фильтр поставите. |
|
02.10.2020, 06:59 | #3 |
Участник
|
Я понимаю, что у Where влияет не порядок а наличие. Влияет порядок в индексе.
Цитата:
Тоже не идеальное решение. |
|
02.10.2020, 07:17 | #4 |
Участник
|
В итоге поменял настройки кластерного индекса. DataAreaId добавил вручную в другом порядке:
Форма жбд заработала без задержек. Пришлось подождать синхронизацию.. но прошла. |
|