0

我正在通过CLR程序集将平面文件导入数据库。
对于平面文件中的每一行,程序集会进行一些质量检查。我注意到将数据表存储在数据表中并查询这些数据表要比直接查询数据库慢得多。另一方面,HashSet看起来和查询数据库一样快。更好地查询DB或将表数据加载到CLR程序集中的对象中?

目前,我的代码有时会将数据加载到HashSet中,并为每一行查询HashSet,而在其他时候它会为每行分别检查DB。例如,当我检查数据库中的源行的密钥是否存在〜10000个源行和1000个可能的正确密钥时。
HashSet
+我只查询DB一次,并且程序集可以在HashSet上执行它的检查。
- 为什么复制数据库中已经存在的东西?
查询数据库
+ DB保存表的结构,并针对这些查询进行了优化。
- 我必须管理DB连接,这可能包括多次打开/关闭DB连接。

我想标准化我的代码,并需要帮助决定使用哪个选项我没有看到我的表现有所不同。如果从CLR程序集打开DB-Connection不是问题,那么我宁愿查询数据库,因为我可以将SQL代码写入CLR程序集并执行它,而不必编写多个对象。

是否有技术上的理由使用其中之一?
编码风格的建议?

注意:我正在处理静态数据,所以我不需要担心导入程序集正在运行时的数据更改。

Perhaps a related question.

回答

0

我会把票投给HashSet的。由于DB vs HashSet没有显着差异。一旦你在系统中拥有了所有的东西,你就不必担心数据库调用连接和所有问题。

- 为什么要复制已存在于数据库中的某些内容?

这种复制将使您免于一次又一次击中DB,您可以在系统中播放数据。

相关问题