Оптимизация запросов Microsoft из Oracle DB в Excel - PullRequest
1 голос
/ 04 июля 2019

Я использую около 40 таблиц, запрошенных с помощью запроса Microsoft Excel в Excel.Они устанавливают разные соединения, но строка соединения одинакова.Все запросы select * from x.x в данном случае - представление oracle db.Я проверил время выполнения с помощью скрипта Visual Basic: Соединение с данными ODBC для Excel Время запроса, необходимое для обновления каждого запроса

В среднем соединение, показанное vba, в 4 раза медленнее, чем непосредственное выполнение представленийв базе данных с использованием datagrip.Таким образом, в общей сложности требуется 25 секунд, чтобы обновить всю книгу Excel, что совершенно неприемлемо.Чтобы привести пример конкретного представления, если для Datagrip требуется 85 мс, в Excel требуется около 350 мс (это после использования материализованных представлений, как описано ниже).

Быстрая загрузка данных в Excel уже выбрана.Запросы не зависят друг от друга, поэтому нет одного и того же соединения или запроса, вызываемого несколько раз.Нет никаких преобразований в данные, поэтому сворачивание запросов (детали которых я не читал) не должно быть проблемой.

Я также создал материализованное представление.Это уменьшило задержку в Excel (например, от 1,5 с до 1,15 секунды или от 600 до 350 мс для двух примеров просмотра).Однако улучшение в datagrip (4x) намного больше, чем в Excel (1,5x-2x), и это не связано с кэшированием в datagrip (кэширование сокращается на 85 мс до 30 мс).

Общий файл Excel с даннымисоставляет всего около 1,5 МБ.

Какие еще методы я могу использовать для улучшения времени обновления в Excel?

Я бы хотел сократить до 4-5 секунд.Как крупнейший запрос / просмотр имеет 4000 строк.Еще 2 просмотра имеют около 100-200 строк, а другие содержат в среднем 10x20 таблиц.Некоторые еще меньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...