vb.net – 慢速MSAccess磁盘写入

我正在尝试编写一个VB.Net程序,每天为MSAccess表保存1-2百万个5字段记录(加上索引ID).保存过程目前需要13-20个小时,这显然是不对的.

它是一个平台,索引最小,目前只有156MB.除了一个双字段外,字段是小字符串,日期或长整数.磁盘本身是一个15,000 SATA,仅用于此文件.在保存例程期间,计算机和程序没有执行任何其他操作.保存例程是一个简单的FOR-NEXT循环,它为数据集中的每条记录发出一个简短的INSERT语句.

任何人都有关于我需要改变的想法,以使其更好地工作?

可以在任何DBMS上工作以大幅加速插入的技巧是在批量插入数据之前暂时禁用索引,外键和约束 – 然后在数据库中的数据之后再次启用它们.

特别是索引可以是顺序插入的性能杀手,它至少要先填充一个表(有时为2!),然后在已经填充的数据上创建索引,而不是在索引到位时插入.在这种情况下,您可能需要删除索引,然后重新创建它.

然后,正如大多数其他海报已经说过的那样,如果你可以一串一行地插入一行,真的是浪费时间.如果打开表没有锁定或只有乐观锁定,您将获得较小的速度提升.

然后你可以通过使用DAO记录集而不是ADO来获得另一个微小的增量 – 我在VB6开发的那些日子里注意到这一点,可能这不再是ADO.NET的情况了.

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...