我有一个包含超过 1 亿条记录的数据库。我正在运行一个包含超过 1000 万条记录的查询。这个过程需要太多时间,所以我需要缩短这个时间。我想将获得的记录列表保存为 csv 文件。我怎样才能尽可能快和最佳地做到这一点?期待您的建议。谢谢。
最佳答案
我假设您的查询已被限制为您需要的行/列,并且充分利用了索引。
在这种规模下,唯一关键的事情是您不要尝试一次将其全部加载到内存中;所以忘记诸如 DataTable
和大多数全脂 ORM(通常尝试将行与身份管理器和/或更改管理器相关联)之类的东西。您将不得不使用原始 IDataReader
(来自 DbCommand.ExecuteReader
),或任何在 top 上构建非缓冲迭代器的 API那个(有几个;我偏向于小巧玲珑)。出于编写 CSV 的目的,原始数据读取器可能没问题。
除此之外:您不能让它运行得更快,因为您受到带宽的限制。加快速度的唯一方法是在数据库服务器创建 CSV 文件,这样就没有网络开销。
关于c# - 使用 C# 列出来自 Oracle 的超过 1000 万条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8323353/