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

时间:2010-09-24 15:35:39

标签: c# sql-server business-logic-toolkit

今天的快速问题...什么更有效率,并且在SQL Server操作之间的性能差异很大。

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

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

  3. 我会告诉你,我更喜欢第一种解决方案,但我需要知道效率是否低得多(如果效率较低)。

    感谢您的任何意见..

3 个答案:

答案 0 :(得分:2)

通常,多个查询效率较低,因为可能存在网络往返以及每个查询的一些其他开销。您可以做的最有效的方法是在所需的查询次数最少的情况下检索所需的数据。

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

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

连接和构建对象的复杂性可以通过ORM完成。你不必自己实现这些东西。使用NHibernate,您可以使用复杂查询或按id的单个实例检索对象。而且 - 它还支持ADO.NET的批处理和其他一些重要的性能改进。

答案 1 :(得分:1)

你的问题在信息上有点薄......如果对象在同一个表中,它们应该在一个查询中提取,特别是如果你已经知道它们的ID。

答案 2 :(得分:1)

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

相关问题