Я пишу Excel с помощью ExcelDNA и создавая UDF (User-Defined Function).Упаковка нескольких запросов для уменьшения количества подключений к серверу
UDF устанавливает соединение с сервером, и этот сервер подключается к базе данных SQL для извлечения данных и отправки их клиенту.
Однако этот UDF будет называться сотни раз на одном листе.
Я пытаюсь найти способ уменьшить количество запросов на сервер.
По состоянию на данный момент, это то, как шаблон выглядит следующим образом (упрощенный):
ITEM | JAN 2016 | FEB 2016 | MAR 2016 |
---------------------------------------------------
ITEM 1 | UDF | UDF | UDF |
ITEM 2 | UDF | UDF | UDF |
ITEM 3 | UDF | UDF | UDF |
ITEM 4 | UDF | UDF | UDF |
ITEM 5 | UDF | UDF | UDF |
ITEM 6 | UDF | UDF | UDF |
Итак, прямо сейчас, это будет отправлять запросы 18 в общей сложности.
Я хотел бы, чтобы попытаться уменьшить количество запросов на 6.
так, как я имею в виду, что делать прямо сейчас, что для каждого элемента, в зависимости от того запрос отправляется сначала получить данные для всех месяцев, перечисленных в этом пункте. Тогда второй запрос для того же элемента будет просто ждать результата первого запроса.
Например:
Для ПУНКТА 1 Если UDF в 2016 году колонке JAN вызывается первым, он будет запрашивать данные для всех месяцев ПУНКТА 1, а затем хранить эти данные где-то для других запросов взять из.
Затем, когда приходит второй запрос (скажем, MAR 2016), UDF будет ожидать результат UDF JAN 2016. Таким образом, UDF MAR 2016 не придется запускать другое соединение с сервер.
Однако я не знаю, как это реализовать. Я слышал, что ключевые слова ждут и асинхронны, но не имеют опыта их использования.
Любые другие решения проблемы также приветствуются.
Рассмотрите возможность удаления тега 'async-await', поскольку он не связан с пакетной обработкой и вашим вопросом в частности. – cassandrad