代码之家  ›  专栏  ›  技术社区  ›  Łukasz W.

从数据库中检索多个对象的有效方法

  •  1
  • Łukasz W.  · 技术社区  · 14 年前

    今天快问…更有效的是,这些操作与SQL Server操作之间的性能有很大差异。

    1. 在一个事务中,通过四个单独的选择查询(仅按ID获取)从数据库中选择四个对象,或者

    2. 在一个查询中选择它(当然更复杂,使用连接)。

    我会告诉你,我更喜欢第一个解决方案,但我需要知道它是否效率低得多(如果它根本不那么有效的话)。

    谢谢你的意见。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Stefan Steinegger    14 年前

    通常,多个查询效率较低,因为每个查询可能有一个网络往返和一些其他开销。最有效的方法是在最少的查询中准确地检索所需的数据。

    另一方面,如果使用批处理,则可以在一次数据库往返中执行多个查询,这可能与在单个查询中访问对象的时间大致相同。

    如果你只加载几个对象,那就不重要了。业务逻辑的可维护性更为重要,它很可能取决于您选择的解决方案。

    连接和构建对象的复杂性可以通过ORM完成。你不必自己实现这些事情。使用nhibernate,您可以使用复杂的查询或按ID检索单个实例来检索对象。它还支持ado.net的批处理和其他一些重要的性能改进。

        2
  •  1
  •   Kaniu    14 年前

    你的问题不太清楚…如果对象在同一个表中,那么可能应该在一个查询中提取它们,特别是在您已经知道它们的ID的情况下。

        3
  •  1
  •   KeithS    14 年前

    方案2将更快,因为它减少了网络“往返”。提交每个查询,然后等待服务器编译一个查询计划并执行它,对于您提交的每个查询,都会重复执行它;如果您可以从一个查询中获得所需的信息,那么通常会更快。但是,从性能上讲,只有在查询数百或数千个非常“宽”的记录时才可能注意到这一点。

    推荐文章