На самом деле, я не уверен, что вы действительно задаете правильный вопрос здесь.
Мне кажется, что вы ищете решение, меняя свои инструменты, а не меняя свой дизайн и свои подходы. Фактически, для большинства операций ядро доступа Jet существенно быстрее, чем что-то вроде оракула, MySQL или SQL-сервера. Причина в том, что эти другие системы представляют собой огромную массу серверных систем, которые имеют сокет-соединения с сервером. У них есть уровни обработки транзакций. Вероятно, существует 500 дополнительных уровней программного обеспечения и систем между вами и фактическими данными, которые находятся на жестком диске.
Противопоставьте это доступу, который по сути является внутрипроцессной программой (а не запущенной службой). Вы не подключаетесь к файлам данных Access через какое-либо TCP / IP-соединение, как вы делаете это с серверными системами (на самом деле большинство этих серверных систем вынуждают вас подключаться через сетевой уровень даже на локальном компьютере, и тем не менее вы используете локальный подключение к памяти, при условии, что эта опция доступна).
JET (ядро базы данных Access) не является службой, а просто очищает файл от жесткого диска и отображает результаты. Это удаление данных с диска происходит с той же скоростью, что и oracle или SQL-сервер и все эти другие системы (мы предполагаем, что здесь используется та же машина и оборудование). Тем не менее, эти другие системы все еще имеют еще 500, может быть, даже 1000 дополнительных уровней кода и программных и сетевых соединений, а также огромные объемы, такие как безопасность пользователей и т. Д. Все это существенно замедляет доступ к данным на жестком диске в больших количествах.
Теперь, конечно, если вы говорите о соединении по какому-либо типу сети, тогда эти серверные системы лучше, потому что вы хотите, чтобы вся обработка и все это происходило до того, как любые данные начнут течь по сетевому каналу.
Однако в вашем сценарии сервер и компьютер - это одно и то же. Поэтому имеет смысл полностью исключить массу огромного контекста тысяч дополнительных слоев программного обеспечения. Как я уже отмечал, в сценариях такого типа Jet может быть на 50% или даже вдвое быстрее серверных систем, таких как MySql или Oracle.
Доступ может объединяться, классифицироваться и суммироваться для инвентаризации 150 000 записей с точностью до секунды, причем с помощью объединения нескольких таблиц.
Теперь, с другой стороны, в любой из этих систем, как правило, большие накладные расходы, это открыть соединение с определенной таблицей. Фактически время, необходимое для открытия таблицы, составляет около 30 000 записей для переноса. Таким образом, это означает, что вы хотите убедиться, что ваш код и использование этих таблиц не обязательно открывают новую таблицу (особенно в некотором цикле кода. Другими словами, даже в местах многократного выполнения команды вставки SQL, вы Намного лучше открыть набор записей, а затем выполнить вставки таким образом, так как тогда вы больше не используете команды SQL, и для каждой вставки строки вы не выполняете отдельный анализ текста в этом sql ( это может дать вам примерно 100-кратное увеличение производительности при использовании доступа таким образом - иными словами, часто цитируемый совет заключается в том, что использование команд SQL быстрее, чем открытие набора записей, совершенно неверно).
Что это означает, если вы испытываете какое-то замедление здесь, я бы посмотрел на ваш код и проекты и убедился, что наборы записей и наборы данных не будут повторно открываться и закрываться. Вы не должны испытывать каких-либо заметных задержек в ваших операциях с данными, учитывая небольшой размер файлов, которые вы упоминаете здесь.
Чтобы быть справедливым, sqlLITE также (я полагаю) является незавершенным выпуском MySql, не основанным на серверах, и большинство преимуществ, указанных выше, также применимы. Но опять же, ваша горлышко бутылки не будет сильно отличаться в каждом конкретном случае, и поэтому мы вернемся к разработке вопросов здесь.
Другими словами, вы лаете не на то дерево, и разработчик, который ищет изменения в своих инструментах для исправления производительности, просто ищет исправление, обвиняя инструменты, когда в большинстве случаев проблема заключается в принятых проектах.