从数据库中获取记录

时间:2010-12-22 20:54:56

标签: c# performance oracle

在我的C#3.5应用程序中,代码执行以下步骤:

1.浏览[长度为10]的集合

2.对于步骤1中的每个项目,通过执行存储过程从[oracle数据库]获取记录[此处,记录计数通常为100]

3.处理在步骤2中提取的项目。

4.转到步骤1中的下一个项目。

我的问题,关于性能,在步骤#2中获取所有项目是个好主意[即。一次性使用10 * 100 = 1000条记录,而不是在每一步中连接到数据库并检索10条记录?

感谢。

4 个答案:

答案 0 :(得分:4)

是的,它稍微好一点,因为你将失去连接到数据库的开销,但你仍然会有10个存储过程调用的开销。如果你能找到一种方法将所有10个项目作为参数传递给存储过程并执行一个存储过程调用,我认为你会获得更好的性能。

答案 1 :(得分:2)

根据连接步骤的强度,最好一次获取所有记录。但是,请记住,过早优化是所有邪恶的根源。 : - )

答案 2 :(得分:1)

通常,最好在一个存储过程调用中从数据库中提取所有记录。

当存储过程调用长时间运行或者足够大以引起对表的争用时,这会被抵消。在你的情况下,只有1000条记录,我怀疑这将是一个问题。

答案 3 :(得分:0)

是的,这是一个非常好的主意。数据库性能的关键是尽可能多地运行批量操作。

例如,只考虑PL / SQL和SQL之间的交互。这两种语言在同一台服务器上运行,并且非常完整地集成。然而,当我减少或消除两者之间的任何相互作用时,我通常会看到一个数量级的性能提升。我确信同样的事情适用于应用程序和数据库之间的交互。

尽管记录的数量可能很少,但扩大您的操作是一个很好的习惯。这不是过早的优化,它是一种最佳实践,可以为您节省大量的时间和精力。