我怀疑从DB中检索多条记录。
案例1:
案例2:
在上述两种情况中,哪一种是可取的?
我在想的是,
Web服务器也是可扩展的,DB Server也是可扩展的(假设我的数据库大小不超过50GB)。
那么我应该在哪里进行过滤和计算以提高性能?为什么?
答案 0 :(得分:2)
这是一个相当抽象的问题 - 它将有助于得到一个更具体的例子。
但是,如果通过过滤意味着从结果集中删除不需要的项目,那么这种情况非常适合SQL中的“where”子句。
数据库比Web服务器快得多,因为它利用了索引。由于数据库也会向Web服务器传输较少的数据,因此数据库的整体性能可能会提高,因为在高流量时,I / O成为一个重要的瓶颈;如果您将大量数据传输到Web服务器,这将影响您的I / O性能。
在某些情况下,这很难做到 - 特别是在过滤器动态变化的情况下。构建有效的SQL,其中Web服务器逻辑中的子句有点棘手 - 例如,如果您希望为用户提供动态构建过滤器。即使这样,我仍然建议在SQL中进行过滤。
答案 1 :(得分:1)
我会选择案例1,因为RDBMS理想地用于以有效的方式进行选择和过滤。我不会通过网络将所有数据带到Web服务器,其中过滤可能涉及浏览每条记录以评估它是否满足过滤条件。