当前位置:  开发笔记 > 后端 > 正文

SQL Server/MySQL/Access - 加速以低效方式插入许多行

如何解决《SQLServer/MySQL/Access-加速以低效方式插入许多行》经验,为你挑选了0个好方法。

建立

我必须在SQL Server 2000/2005,MySQL或Access中插入几百万行.不幸的是,我没有一种简单的方法来使用批量插入或BCP或普通人类会采用的任何其他方式.插入将发生在一个特定的数据库上,但该代码需要与数据库无关 - 因此我无法进行批量复制,SELECT INTO或BCP.但是,我可以在插入之前和之后运行特定查询,具体取决于我要导入的数据库.

例如.

If IsSqlServer() Then
    DisableTransactionLogging();
ElseIf IsMySQL() Then
    DisableMySQLIndices();
End If

... do inserts ...

If IsSqlServer() Then
    EnableTransactionLogging();
ElseIf IsMySQL() Then
    EnableMySQLIndices();
End If

我可以对SQL Server做些有趣的事情来加速这些插入吗?

例如,是否有一个命令可以告诉SQL Server,"嘿,不要在事务日志中记录这些事务".

或许我可以说,"嘿,我有一百万行进来,所以在我完成之前不要更新你的索引".

ALTER INDEX [IX_TableIndex] ON Table DISABLE
     ... inserts
ALTER INDEX [IX_TableIndex] ON Table REBUILD

(注意:上面的索引禁用仅适用于2005,而不是2000.如果你知道在2000年这样做的方法,可以使用奖励积分).

MySQL和Access怎么样?

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有