情况如下:我有一个很大的数据集,其中包含从 Excel 文件填充的数千个条目。对于每个条目,我必须将其与数据库中某个表上的另一个字段相匹配(该表仅包含几百个条目)。
最好的方法是什么?我可以对数据集中的每个条目进行查询,但这似乎相当浪费;另一方面,我可以从表中的所有条目中选择我需要的字段,将它们放在字典或其他数据结构中,并在 IIS 上匹配它们,从而有效地只进行一个查询,但在网络服务器上进行所有处理.
数据集:约 1000 至约 3000 个条目
数据库中的表:约 300 个条目
在IIS上使用asp.net,但数据库是MS access文件。
其中一个更好吗?还有我没有想到的第三种更好的方法吗?
最佳答案
数据库的设计目的是做许多对数据处理有用的事情。事务处理的许多好处都包含在缩写 ACID 中——原子性、一致性、隔离性、持久性。换句话说,数据库的行为方式与您在其中存储内容时所期望的方式相同。数据就在那里,关系得到加强,明天就会在那里。
您想要的功能位于查询端。一般而言,数据库(尽管可能不是特别是 MS Access)允许使用相对标准的接口(interface)来进行强大的处理。数据库引擎知道如何优化查询。数据库引擎知道如何管理内存。数据库引擎知道如何管理分层内存,包括磁盘、RAM 和缓存。数据库知道如何利用索引、行分区和其他优化(您可以通过使用更高级数据库的免费版本来获得此功能,例如 SQL Server、Oracle、Postgres 甚至 MySQL)。
您正在谈论数千行数据。数据库可以轻松处理数百万行。你说的是两张 table 。数据库可以使用十几个表轻松管理更多表和查询。
所以,不,您不应该将数据加载到应用程序端的内存结构中。您应该在数据库中进行处理并返回您想要的结果。然后,您可以在应用程序端格式化结果,以利用应用程序最擅长的功能:用户界面。
关于c# - 我应该执行许多 sql 查询还是一个大型查询并在服务器上进行处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23782126/