Ваша задача обычно называется ETL для extract-transform-load.
У вас есть несколько способов ускорить это.
- попробуйте большие партии строки (страницы). Возможно, что выборка 40K строк может быть намного быстрее для каждой строки, чем 4K строк с использованием вашего интерфейса ODB C.
- Access имеет команду «Сжать и восстановить базу данных» в разделе «Инструменты» или «Управление» пользовательского интерфейса. Возможно, очистка ускорит ваши операции, особенно если база данных использовалась некоторое время. Подкрепите это сначала. Это занимает время простоя.
- экспортируйте таблицу Access в файл .csv в вашей файловой системе, затем используйте LOAD DATA INFILE, чтобы импортировать ее в MySQL. Экспорт в .csv может быть значительно быстрее, чем ваши запросы odb c.
- переписать вашу программу извлечения / переноса / загрузки в do tnet (C#). do tnet имеет собственный, а не ODB C, интерфейс для чтения файлов доступа и может быть намного быстрее.
ETL для десяти миллионов строк потребуется время, независимо от того, как Вы используете множество хитрых уловок.
Маловероятно, что все десять миллионов строк Access меняются несколько раз в день. Если есть способ извлечь / преобразовать / загрузить только измененные строки, это ваш лучший выбор. Но это, вероятно, изменение данных, и вы, вероятно, не хотите касаться этого приложения Access.