SQL 插入速度慢 - "pre populate with blank rows??"
SQL inserts slow - "pre populate with blank rows??"
我有一个 .exe 将 vbTab 分隔的 .txt 文件与 SQL table.
进行比较
table 现有记录的更新速度非常快。为新记录插入 table 非常慢。
由于我是 SQL 的新手,我想知道我的想法是不是胡说八道:
我想也许一个解决方案是 "pre populate" 数据库有 10,000 个空行(减去主键)并以某种方式加快进程?
如有任何建议,我们将不胜感激。
为了回答您的问题,我们可能需要更多信息。
您的 table 有多少行?
我猜可能是缺少索引。
您的问题没有直接的答案,因为我们不知道很多事情(数据库配置、硬件、现有数据等)
不过你可以试试下面的东西,
尝试使用数据库导出-导入功能
无需使用迭代器从数据库中获取记录并将它们与文件中的记录进行比较,然后进行插入或修改,您可以使用更新插入(如果存在则更新或如果不存在则插入)策略直接将这些记录导入数据库。相信我,这比以前工作得更快。
如果您在 table 上有索引,则在导入或插入时删除 table 上的当前索引并执行操作。操作后再次重新应用这些索引。索引会降低插入的性能。
如果导入策略不适合你(如果你在插入之前先处理这些记录)那么可能去修改存储过程并在删除索引后插入新行。
在此期间 activity 还要检查数据库配置。对缓冲区、分页、锁定使用适当的调整。
希望这对您有所帮助 :)
我有一个 .exe 将 vbTab 分隔的 .txt 文件与 SQL table.
进行比较table 现有记录的更新速度非常快。为新记录插入 table 非常慢。
由于我是 SQL 的新手,我想知道我的想法是不是胡说八道:
我想也许一个解决方案是 "pre populate" 数据库有 10,000 个空行(减去主键)并以某种方式加快进程?
如有任何建议,我们将不胜感激。
为了回答您的问题,我们可能需要更多信息。 您的 table 有多少行? 我猜可能是缺少索引。
您的问题没有直接的答案,因为我们不知道很多事情(数据库配置、硬件、现有数据等)
不过你可以试试下面的东西,
尝试使用数据库导出-导入功能
无需使用迭代器从数据库中获取记录并将它们与文件中的记录进行比较,然后进行插入或修改,您可以使用更新插入(如果存在则更新或如果不存在则插入)策略直接将这些记录导入数据库。相信我,这比以前工作得更快。
如果您在 table 上有索引,则在导入或插入时删除 table 上的当前索引并执行操作。操作后再次重新应用这些索引。索引会降低插入的性能。
如果导入策略不适合你(如果你在插入之前先处理这些记录)那么可能去修改存储过程并在删除索引后插入新行。
在此期间 activity 还要检查数据库配置。对缓冲区、分页、锁定使用适当的调整。
希望这对您有所帮助 :)