我有一个.exe,它将vbTab分隔的.txt文件与SQL表进行比较。
对表的现有记录的更新非常快。在表中插入新记录非常慢。
由于我是SQL的新手,我想知道我的想法是否是疯狂的谈话:
我认为也许一个解决方案就是用10,000个空行(减去主键)“预填充”数据库,并以某种方式加速这个过程?
任何建议都将不胜感激。
答案 0 :(得分:2)
对于您的问题没有直接的答案,因为我们不知道许多事情(数据库配置,硬件,现有数据等)。
但你可以尝试下面的事情,
尝试使用数据库导出导入功能
不是使用迭代器从DB中获取记录并将它们与文件中的记录进行比较,然后插入修改,而是可以使用upsert(如果存在则更新或如果不存在则插入)策略将这些记录直接导入DB。相信我,这比以前更快。
如果该表上有索引,则导入或插入时会删除该表上的当前索引并执行操作。操作后再次重新应用这些索引。索引会降低插入的性能。
如果导入策略对您不利(如果您在插入之前首先处理这些记录),则可能需要修改存储过程并在删除索引后插入新行。
在此活动期间,还要检查数据库配置。对缓冲区,分页,锁定使用适当的调整。
希望这有帮助:)
答案 1 :(得分:0)
要回答您的问题,我们可能需要更多信息。 你的桌子有多少行? 我想这可能是缺乏索引。