Ситуация с размерами файлов Jet для меня бесконечно проблематична.
В настоящее время я наблюдаю часть своего собственного кода VBA из базы данных Access, поскольку он выполняет серию полей для одной записи обновления с использованием ADO для таблицы в базе данных Access B (с помощью запроса на обновление ссылка в базе данных А). Единственное поле - это CHAR (8). С каждыми 4 обновлениями база данных B увеличивается примерно на 8 Кбайт. Нет хорошего оправдания для этого. Добавление к размеру файла сильно снижает производительность; с каждым ростом файла обновления замедляются от примерно одной в секунду (в таблице из 30-40 тыс. записей с использованием поиска SQL с одной записью и без индексов в любом месте) до одного за 5-10 секунд.
Теперь, я признаю, я выполнил сжатие / восстановление базы данных B до запуска этого кода обновления; возможно, если бы я этого не сделал, производительность не была бы такой плохой. Если бы целевое поле для обновления имело, скажем, тип Memo, то я бы ожидал этого. Но выполнять обновление поля CHAR () и получать этот результат просто нецелесообразно.
Большинство из вышеперечисленного (без особой критики за какое-либо одно предназначенное решение), по-видимому, являются допустимыми решениями для приложений, которые используют относительно постоянную схему бизнес-приложений (постоянно обращаются к одним и тем же целевым базам данных). Мой не так. , , Я не могу изменить целевую базу данных (база данных B), так как она создается и используется инструментом вендора, который мы используем для экспорта и импорта данных из их приложения.
Я понимаю и рекомендую вышеупомянутым авторам за то, что они нашли решения проблем пользователей. Тем не менее, я не могу позволить этому стоять, когда плохое проектирование / реализация программного обеспечения мешает пользователям, использующим продукт, поскольку пользователи ожидают, что он будет функционировать.