@ Марк Рэнсом определенно настроен на то, что Excel хранит данные в памяти, что ускоряет вычисления. Также возможно, что Excel предварительно индексирует наборы данных таким образом, что делает его более отзывчивым, чем ваша база данных.
Существует одна существенная, неалгоритмическая возможность, почему это быстрее: Excel, в использовании сводной таблицы, не имеет понятия объединения. Когда вы извлекаете данные ad hoc из вашей базы данных, любые объединения или корреляции между таблицами приведут к дальнейшему поиску, сканированию, загрузке индекса и т. Д. Поскольку в Excel все данные находятся в одном месте (ОЗУ или нет), он может выполнять поиск без необходимости предварительно формировать наборы данных. Если бы вам пришлось загружать данные вашей базы данных во временную таблицу, было бы интересно посмотреть, как специальные запросы к этой таблице складываются с точки зрения производительности в отношении Excel.
Одно можно сказать наверняка: хотя базы данных являются отличными инструментами для создания точных отчетов, традиционно нормализованная база данных будет гораздо менее оптимальной для специальных запросов. Поскольку нормализованные структуры данных фокусируются на целостности превыше всего (если можно так выразиться), они жертвуют специальной оптимизацией за счет сохранения разумности всех данных. Хотя это плохой пример, рассмотрим следующую нормализованную схему:
+--------+ +---------+
|tblUsers| |luGenders|
+--------+ +---------+
|userID | |genderID |
|genderID||gender |
+--------+ +---------+
SELECT * FROM luGenders;
> 1 Female
> 2 Male
Если в этом примере мы хотим узнать количество пользователей женского / мужского пола в нашей системе, базе данных потребуется обработать объединение и вести себя соответствующим образом (опять же, это плохой пример из-за малого числа объединений и небольшое количество возможных значений, что обычно должно привести к некоторой оптимизации ядра базы данных). Однако, если бы вы выгрузили эти данные в Excel, вы все равно понесли бы некоторые потери в базе данных, чтобы извлечь данные, но на самом деле поворот данных в Excel был бы довольно быстрым. Вполне возможно, что это представление о начальном штрафе с фиксированной стоимостью не принимается из-за того, что вы считаете, что Excel быстрее, чем прямые специальные запросы, но у меня нет данных для комментариев.
Однако наиболее касательным моментом является то, что хотя общие базы данных хороши для точности, они часто сосут на специальные отчеты. Для создания специальных отчетов часто бывает необходимо нормализовать («складировать») данные в более запрашиваемой структуре. Поиск информации о хранилище данных даст много хороших результатов по этому вопросу.
Мораль истории: наличие полностью алгоритмической, быстрой системы специальных запросов - это потрясающий идеал, но он меньше практического, учитывая ограничения пространства и времени (память и человеко-часы). Чтобы эффективно создать специальную систему, вам действительно необходимо понять варианты использования ваших данных и затем эффективно их денормализовать.
Я бы настоятельно рекомендовал Инструментарий хранилища данных . Для справки, я не администратор баз данных, я просто скромный аналитик, который тратит 80 часов в неделю на изучение Excel и Oracle. Я знаю твою боль.