在asp.net中获取有效数据

时间:2011-09-12 08:23:09

标签: asp.net sql-server .net-3.5

我有这么多:
用于存储“文件夹”的表。每个文件夹可能包含子文件夹和文件。因此,如果我单击一个文件夹,我必须列出该文件夹的内容。

表示文件夹列表的表格类似于以下内容

FolderID   Name  Type  Desc ParentID

对于子文件夹,ParentID是指父文件夹的FolderID 现在,我的问题是

1  一个。有3种类型的文件夹,我使用3个数据列表对它们进行分类。我可以在一次获取中加载整个表,然后使用LINQ对类型进行分类。

OR

湾通过将“类型”传递给存储过程来加载每个类别。这将进行3次数据库调用。

2 一个。如果我单击父文件夹,使用LINQ过滤文件夹的内容(因为我们在内存中有整个表)

OR

湾如果单击父文件夹,则传递父文件夹的FolderID,然后获取内容。

在上述两种情况中,哪些点更有意义,哪些点在性能方面最佳?

2 个答案:

答案 0 :(得分:1)

您需要做出许多考虑。

  • 文件夹树的大小是多少,如果目前不大,可能会变得非常大?

  • 在用户使用/查看文件夹表时,修改文件夹表的可能性是多少?如果有很高的可能性,那么可能值得对数据库进行更小,更频繁的调用,以便用户了解其他用户所做的任何更改。

  • 用户一次只能使用一种文件夹类型吗?或者他们会在这三棵不同的树之间切换吗?

作为一种本能的回答,我会被吸引到一次调用1或2级。例如 - 从加载根文件夹和直接子项开始。当用户向下导航到树中时,检索更多孩子......

答案 1 :(得分:1)

当您对性能提出质疑时,唯一可用的答案是:

测量它!。实施这两种方案并查看它们 - 它们如何加载您的系统 试着想一想,如何缓存数据以防止高数据库负载 All works fast for small n,所以我们不能肯定地说些什么。

如果您的数据很小并且不经常更改,请对缓存数据使用基于缓存和LINQ的查询 如果您的数据无法存储在缓存中,因为它很大,或者它会不断变化,那么请缓存查询结果,为它们创建缓存依赖项,然后再次测量它!