我正在通过 CLR 程序集将平面文件导入数据库。
对于平面文件中的每一行,程序集都会进行一些质量检查。我注意到在 DataTables 中存储 DB 表并查询这些 DataTables 比直接查询 DB 要慢得多。另一方面,HashSet 似乎与查询数据库一样快。
目前,我的代码有时会将数据加载到 HashSet 中并为每一行查询 HashSet,有时它会为每一行单独检查数据库。例如,当我检查源行中的一个键是否存在于数据库中以获取 ~10 000 个源行和 ~1000 个可能的正确键时。
HashSet :
+ 我只查询数据库一次,程序集可以对 HashSet 执行检查。
- 为什么要复制数据库中已经存在的东西?
查询 DB:
+ DB 保存表的结构,并针对此类查询进行了优化。
- 我必须管理数据库连接,这可能包括多次打开/关闭数据库连接。
我想标准化我的代码,并且需要帮助决定使用哪个选项?我没有看到我的表现有什么不同。如果从 CLR 程序集打开 DB-Connection 不是问题,那么我更愿意查询 DB,因为我可以将 SQL 代码写入我的 CLR 程序集并执行它,而不必编写多个对象.
是否有技术原因使用其中一个?
编码风格的推荐?
注意:我正在处理静态数据,因此在导入程序集运行时我不需要担心数据更改。