【问题标题】:How does the cost of getting a specific row of a table compare to the cost of getting all rows?获取表的特定行的成本与获取所有行的成本相比如何?
【发布时间】:2020-09-12 22:13:21
【问题描述】:

我必须在用户浏览器上呈现一个树形数据结构,每个节点都知道它的子节点。获取整个表并在客户端完成其余的繁重工作与通过多个查询获取节点相比如何,知道用户可能不需要所有节点,但平均需要 80%?

也就是说,对于我的 SQL 服务器,最好只发送整个表并完成它,还是根据需要发送节点,知道可能需要所有节点并且平均需要 80% 的节点?用户总是通过 ID/Primary Key 请求节点。

这个问题与 Django 和递归加载对象有关。

【问题讨论】:

    标签: sql django database recursion recursive-query


    【解决方案1】:

    您似乎可以选择:

    • 多次查询以获得 80% 的行。
    • 单个查询可获取 100% 的行,并在客户端进行额外处理。

    如果没有额外的信息,这两种方法似乎都是合理的。假设额外的处理相对较少,那么第二个可能是更好的解决方案。运行多个查询的开销可能大于返回额外 25% 行的开销。

    但是,如果这是一个重要的性能考虑因素,您应该在您的系统和数据上进行测试。

    【讨论】:

      【解决方案2】:

      如果您在服务器端进行所有过滤,则您正在使用资源。如果您有很多用户,这将降低您所有用户的网站速度。尤其是当您在后台进行大量查询和处理时。

      如果您在客户端执行此操作,则所花费的资源在客户端计算机上。网站/功能需要更多时间来加载,因为它必须过滤用户需要的内容。

      有利有弊。但请始终确保您发送的数据是非机密数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多