gpt4 book ai didi

c# - 600K 记录的数据库或平面文件?

转载 作者:行者123 更新时间:2023-11-29 01:06:18 24 4
gpt4 key购买 nike

我正在编写一个 C# 应用程序,它需要在某个时间点将大约 60 万条记录插入到数据库中。

它们是非常简单的记录:只有 3 个多头。

我正在使用 params 来设置命令,然后循环访问内存中的数据以进行插入,在每个循环中将值分配给命令参数并运行 command.ExecuteNonQuery()

在 SqlServer 上完成大约需要 50 秒,在 MySql 上甚至更慢,而在平面文件上插入相同的数据只需要几毫秒。

是我做错了什么还是数据库太慢了?

最佳答案

由于以下几个原因,您会发现写入平面文件的速度更快:

  • ExecuteNonQuery 不会将多个插入语句分组到批中,因此您会为每条记录招致完整的进程间通信周转。分组发送您的插入语句。
  • 您拥有的数据已经采用平面文件的形式,因此您可以在一次写入或几次带有缓冲的写入中将其全部触发。
  • 数据库操作倾向于使用需要 n log n 时间的树,而简单的数组结构将花费线性时间。另一方面,如果您要合并到一个排序的平面文件中,那将需要一段时间。

关于c# - 600K 记录的数据库或平面文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1051781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com