获取 table 的特定行的成本与获取所有行的成本相比如何?

How does the cost of getting a specific row of a table compare to the cost of getting all rows?

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

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

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

如果您在服务器端进行所有过滤,那么您就是在使用资源。如果您有很多用户,这会降低所有用户的网站速度。尤其是当您在后台执行大量查询和操作时。

而如果您在客户端执行此操作,则消耗的资源将在客户端计算机上。 website/functions 需要多一点加载时间,因为它必须过滤用户需要的内容。

有利也有弊。但始终确保您发送的数据是 non-confidential 数据。

您似乎可以选择:

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

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

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