检查条件,执行计算和过滤记录,执行数据库与Web服务器

时间:2012-09-14 16:02:25

标签: sql-server database iis webserver

我怀疑从DB中检索多条记录。

案例1:

  • 应用连接,从数据库中选择所有记录(选定列),并在Web服务器中执行过滤条件。

案例2:

  • 应用连接,应用过滤条件,在数据库中进行计算,在Web中不执行任何操作只显示数据。

在上述两种情况中,哪一种是可取的?

我在想的是,

  • 在案例1中,DB没有太多工作,但网络承载了大量数据,Web服务器需要做更多的工作。
  • 在案例2中,DB有很多工作,但网络的记录比案例1少,而且Web服务器的工作量较少。

Web服务器也是可扩展的,DB Server也是可扩展的(假设我的数据库大小不超过50GB)。

那么我应该在哪里进行过滤和计算以提高性能?为什么?

2 个答案:

答案 0 :(得分:2)

这是一个相当抽象的问题 - 它将有助于得到一个更具体的例子。

但是,如果通过过滤意味着从结果集中删除不需要的项目,那么这种情况非常适合SQL中的“where”子句。

数据库比Web服务器快得多,因为它利用了索引。由于数据库也会向Web服务器传输较少的数据,因此数据库的整体性能可能会提高,因为在高流量时,I / O成为一个重要的瓶颈;如果您将大量数据传输到Web服务器,这将影响您的I / O性能。

在某些情况下,这很难做到 - 特别是在过滤器动态变化的情况下。构建有效的SQL,其中Web服务器逻辑中的子句有点棘手 - 例如,如果您希望为用户提供动态构建过滤器。即使这样,我仍然建议在SQL中进行过滤。

答案 1 :(得分:1)

我会选择案例1,因为RDBMS理想地用于以有效的方式进行选择和过滤。我不会通过网络将所有数据带到Web服务器,其中过滤可能涉及浏览每条记录以评估它是否满足过滤条件。