我应该做多个SQL查询或一个大型查询并在服务器上进行处理吗?

时间:2014-05-21 11:39:43

标签: c# asp.net sql ms-access

情况如下:我有一个大型数据集,其中有几千个条目,我从Excel文件填充。对于每个条目,我必须将它与数据库中某个表上的另一个字段匹配(该表只包含几百个条目)。

最好的方法是什么?我可以对数据集中的每个条目进行查询,但这看起来相当浪费;另一方面,我可以从表中的所有条目中选择我需要的字段,将它们放在字典或其他数据结构上并在IIS上匹配它们,从而实际上只有一个查询但在Web服务器上进行所有处理

数据集:~1000到~3000个条目

DB中的表:~300个条目

在IIS上使用asp.net,但数据库是MS访问文件。

其中一个更好吗?有没有第三种更好的方式我没有想过?

1 个答案:

答案 0 :(得分:4)

评论太长了。

数据库旨在执行许多对数据处理有用的事情。事务处理的许多好处都包含在首字母缩写词ACID中 - 原子性,一致性,隔离性,持久性。换句话说,数据库的行为与您在其中存储内容时的预期方式相同。数据存在,关系得到执行,明天就会存在。

您想要的功能在查询方面。通常,数据库(尽管可能不是MS Access)允许相对标准的接口进行强大的处理。数据库引擎知道如何优化查询。数据库引擎知道如何管理内存。数据库引擎知道如何使用磁盘,RAM和缓存管理分层内存。数据库知道如何利用索引,行分区和其他优化。 (您可以使用更高级数据库的免费版本来获得此功能,例如SQL Server,Oracle,Postgres甚至MySQL。)

您正在谈论数千行数据。数据库可以轻松处理数百万行。你说的是两张桌子。数据库可以使用十几个来轻松管理更多的表和查询。

所以,不,你不应该将数据加载到应用程序端的内存结构中。您应该在数据库中进行处理并返回所需的结果。然后,您可以在应用程序端格式化结果,以利用哪些应用程序做得最好:与用户的接口。