c# - 使用 C# 列出来自 Oracle 的超过 1000 万条记录

标签 c# performance oracle

我有一个包含超过 1 亿条记录的数据库。我正在运行一个包含超过 1000 万条记录的查询。这个过程需要太多时间,所以我需要缩短这个时间。我想将获得的记录列表保存为 csv 文件。我怎样才能尽可能快和最佳地做到这一点?期待您的建议。谢谢。

最佳答案

我假设您的查询已被限制为您需要的行/列,并且充分利用了索引。

在这种规模下,唯一关键的事情是您不要尝试一次将其全部加载到内存中;所以忘记诸如 DataTable 和大多数全脂 ORM(通常尝试将行与身份管理器和/或更改管理器相关联)之类的东西。您将不得不使用原始 IDataReader(来自 DbCommand.ExecuteReader),或任何在 top 上构建非缓冲迭代器的 API那个(有几个;我偏向于小巧玲珑)。出于编写 CSV 的目的,原始数据读取器可能没问题。

除此之外:您不能让它运行得更快,因为您受到带宽的限制。加快速度的唯一方法是在数据库服务器创建 CSV 文件,这样就没有网络开销。

关于c# - 使用 C# 列出来自 Oracle 的超过 1000 万条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8323353/

相关文章:

c# - Serilog - 日志文件的路径

c++ - 就性能而言,使用 std::memcpy() 或 std::copy() 更好吗?

performance - 统一汇编语言

c# - 如何设计数据库接口(interface)

c# - 如何使用 VSTO 加载项项目轻松创建 Excel UDF

c# - MySQL 查询 IF 多条语句

java - 为什么在我实现的插入排序中处理有序数组时,通用版比专用版慢4倍?

json - Oracle:以 JSON 格式返回行?

oracle - DART与ORACLE DART pub一起使用时的 future 功能

sql - 在 where 子句中使用 select 子句中的列号。提取别名原始名称