sin*_*ici 8 c# oracle performance
我有一个包含超过1亿条记录的数据库.我正在运行包含超过1000万条记录的查询.这个过程需要花费太多时间,所以我需要缩短这个时间.我想将获得的记录列表保存为csv文件.我怎样才能尽可能快速和最佳地完成?期待你的建议.谢谢.
Mar*_*ell 11
我假设您的查询已经被约束到您需要的行/列,并且很好地利用了索引.
在这种规模上,唯一关键的是你不要试图将它全部加载到内存中; 所以忘掉像DataTable
大多数全脂ORM(通常尝试将行与身份管理器和/或变更管理器关联).你将不得不为使用原始IDataReader
(从DbCommand.ExecuteReader
),或建立在一个非缓冲迭代任何API 顶部的是(有几个,我对短小精悍的偏见).出于编写CSV的目的,原始数据读取器可能没问题.
除此之外:由于带宽受限,你无法让它变得更快.您可以更快地获得它的唯一方法是在数据库服务器上创建CSV文件,这样就不会有网络开销.
你需要在C#中做到这一点的机会相当渺茫.这是批量数据加载/导出的领域(通常用于数据仓库方案).
许多(免费)工具(我想象甚至是Quest Software的Toad)将比在任何平台上编写它更加强大和高效.
我有一种预感,你实际上并不需要这个最终用户(简单的观察是,部门秘书实际上不需要邮寄出那些副本;它太大而不能以这种方式使用).
我建议使用正确的工具.无论你做什么,