<p>I'm trying to write a VB.Net program that saves 1-2 million 5-field records (plus an indexed ID) to an MSAccess table every day.  The saving process currently takes 13-20 hours, which obviously can't be right.</p>

<p>Its a flat table with minimal indexing, currently only 156MB.  Except for one double field, the fields are small strings, dates, or longs.  The disk itself is a 15,000 SATA which is used only for this file.  The computer and the program are not doing anything else during the save routine.  The save routine is a simple FOR-NEXT loop that issues a short and simple INSERT statement for each record in the dataset.</p>

<p>Anyone got an ideas on what I need to change to get this to work better?</p>

(Disclaimer: I know nothing much about Access)
What do any profiling tools say? (task manager will give you some clues - add more columns to the display to see I/Os, VM usage etc)? Is it doing a lot of disk accesses, or is it all CPU? Is it consuming huge amounts of memory?
The mention of an index concerns me since potentially that needs updating after every INSERT - can you turn the index off, do the creation, then index the complete file afterwards?
Is it linear in time? (i.e. if you create a file 10% of the size does it take 10% of the time)?