C#数据收集v数据库查找 - 哪个更有效?

时间:2011-08-04 11:57:30

标签: c# asp.net sql-server-2008

我想知道我是否可以挑选社区的大脑......

在我正在处理的项目中,需要从键值列表中查找值。此列表在整个软件生命周期内不会更改。让我们举一个例子,因此列表是:

ID       Name

1        Apple
2        Orange
3        Pear
4        Banana

......等等。

我正在考虑实现这两种方法。第一种是将列表存储在某种(尚未确定的)C#数据集合中,然后根据需要在运行时查找所需的值。我正在考虑的第二种方法是将列表存储在数据库表中(SQL Server 2008,因为你问过)。然后,应用程序可以在运行时通过存储过程访问数据库。

在用户从Web表单发出请求后,查找将连续快速发生两次。

我的疑问是:就处理时间而言,这两种方法中哪一种最有效?

我意识到这个问题可能没有明确的答案,但我欢迎任何评论或想法。

3 个答案:

答案 0 :(得分:3)

性能方面的代价通常是磁盘访问和网络访问。

如果您在Web服务器或应用程序服务器中的内存(RAM)中有可用的集合,这将比对数据库的查询更快。

如果数据不太可能经常更改或根本没有,您可以选择内存数据结构,如果有时更改,您可以从db查询并将其存储在缓存中,因此在访问该对象后不需要数据库查询,直到缓存过期或根据您的需要重置。

答案 1 :(得分:0)

使用字典<>,它比数据库的往返速度快几个数量级。

答案 2 :(得分:0)

正如你所说 -

该列表在整个软件生命周期内不会改变。

我会将列表硬编码到程序中。对于永远不会改变的列表,数据库开销是不值得的。