SQL插入速度慢 - “预填充空行?”

时间:2015-01-28 17:16:24

标签: sql-server performance sql-update sql-insert insert-update

我有一个.exe,它将vbTab分隔的.txt文件与SQL表进行比较。

对表的现有记录的更新非常快。在表中插入新记录非常慢。

由于我是SQL的新手,我想知道我的想法是否是疯狂的谈话:

我认为也许一个解决方案就是用10,000个空行(减去主键)“预填充”数据库,并以某种方式加速这个过程?

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:2)

对于您的问题没有直接的答案,因为我们不知道许多事情(数据库配置,硬件,现有数据等)。

但你可以尝试下面的事情,

  1. 尝试使用数据库导出导入功能

    不是使用迭代器从DB中获取记录并将它们与文件中的记录进行比较,然后插入修改,而是可以使用upsert(如果存在则更新或如果不存在则插入)策略将这些记录直接导入DB。相信我,这比以前更快。

  2. 如果该表上有索引,则导入或插入时会删除该表上的当前索引并执行操作。操作后再次重新应用这些索引。索引会降低插入的性能。

  3. 如果导入策略对您不利(如果您在插入之前首先处理这些记录),则可能需要修改存储过程并在删除索引后插入新行。

  4. 在此活动期间,还要检查数据库配置。对缓冲区,分页,锁定使用适当的调整。

    希望这有帮助:)

答案 1 :(得分:0)

要回答您的问题,我们可能需要更多信息。 你的桌子有多少行? 我想这可能是缺乏索引。