Можно ли распараллелить SQL-запрос в Excel VBA? - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть книга Excel, которая подключается к базе данных PostgreS через ODBC. Используя VBA, он выполняет 27 запросов SQL один за другим и копирует каждый результирующий набор в другой лист.

Я доволен полученными данными, но производительность посредственная. База данных должна иметь много ресурсов.

Можно ли распараллелить / многопоточность запросов SQL? Я читал, что распараллеливание невозможно в VBA, как таковой.

1 Ответ

0 голосов
/ 02 мая 2018

Следуя совету @JNevills, я объединил 27 запросов в один мега-запрос. разделены символом «;» общим весом 54,778 символов.

Время исполнения:

  • 27 запросов последовательно: 45 секунд
  • 1 мега-запрос: 30 секунд

Я узнал, что работаю над хорошо зарекомендовавшей себя db-версией, а именно - PostgreS 9.3.11.

Даже если бы у меня было больше ядер, эта версия не побеспокоилась бы использовать их. Если я выполню мега-запрос в Squirrel, это займет около 20 секунд.

Производительность может быть выше при использовании современной базы данных.

Эскиз решения

rs.Open sqlQuery, conn

for i = 1 to 27
   call writeRecordSetToSheet(rs, sheetname)
   Set rs = rs.NextRecordset  '<- magic line for accessing the other 26 recordsets
next i 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...