В NAVISION 2009 R2 у меня есть отчет, который перебирает 3 таблицы:
- Заголовок службы: 82 266 шт. / 120512 Ko
- Сервисная линия: 311 117 шт. / 720 352 тыс. шт.
- Запись в служебной книге: 2 293 754 позиции / 2 453 568 тыс.
Я экспортирую около 10 000 заголовков и 50 000 строк.
Из SQL Server Profiler я вижу, что NAVISION делает:
1 запрос по заголовкам
SELECT * FROM "database_name"."dbo"."company_name$Service Header"
10 000 запросов к строкам (с использованием свойства DataItemLink)
SELECT * FROM "database_name"."dbo"."company_name$Service Line"
50 000 запросов к записям книги (с использованием процедуры SETRANGE + SETFILTER)
SELECT * FROM "database_name"."dbo"."company_name$Service Line"
Из-за размера таблицы записей Service Ledger эти запросы занимают около 300 мс каждый (согласно событиям StmtCompleted), поэтому в целом более 4 часов.
Поскольку я использую ограниченное количество атрибутов из таблиц записей Ledger,
Есть ли способ избежать SELECT *
запроса NAVISION по умолчанию и вместо этого указать необходимые атрибуты?