Database 哪个更贵?循环调用还是数据库调用?

Database 哪个更贵?循环调用还是数据库调用?,database,performance,for-loop,Database,Performance,For Loop,一般来说,哪个更贵?一个双嵌套for循环和一个对数据库的调用,还是只对一个for循环中的N个项中的每一项调用数据库 我不想在几微秒内找到答案,只是想知道我应该朝哪个方向走 TIA.一般来说,您访问数据库的次数越少越好。原因有很多,包括: 如果数据库能够尝试一次获取所有内容,那么它将能够更好地进行优化 您消除了与数据库多次通信的所有开销,这可能非常重要 试一试:DB呼叫很可能会更昂贵。至少这是我目前为止所经历的…一般来说,访问数据库的次数越少越好。一般来说,在内存中执行的任何操作(for loo

一般来说,哪个更贵?一个双嵌套for循环和一个对数据库的调用,还是只对一个for循环中的N个项中的每一项调用数据库

我不想在几微秒内找到答案,只是想知道我应该朝哪个方向走


TIA.

一般来说,您访问数据库的次数越少越好。原因有很多,包括:

  • 如果数据库能够尝试一次获取所有内容,那么它将能够更好地进行优化
  • 您消除了与数据库多次通信的所有开销,这可能非常重要

试一试:DB呼叫很可能会更昂贵。至少这是我目前为止所经历的…

一般来说,访问数据库的次数越少越好。

一般来说,在内存中执行的任何操作(for loop)都比在网络上执行的相同操作(数据库调用)快。然而:

for i = 1 to num_users
    get user from database
end
将比

get users 1 to num_users from database (in one query)

因为这是你向数据库询问真正重要的事情的次数。

如果你要处理每一项,只需打一个电话,除非它会占用大量内存

我想这取决于你在做什么。你的陈述中没有足够的信息

上述答案是正确的,访问数据库的次数越少越好(通常)。因此,您应该尝试在尽可能少的数据库调用中执行特定操作。我认为,唯一的例外是,在应用程序比数据库更快的情况下,可能是在进行复杂的数据转换时,或者在使用效率非常低的数据库时

通常,让数据库以集合形式进行数据转换通常比在for循环中使用游标以编程方式进行转换要快。如果这不是你熟悉的事情,我建议你多学一点SQL,或者读一本好的指导书(注意:我与O'Reilly没有关系,那本书对我非常有帮助。)

这在很大程度上取决于你

如果只有几百项,嵌套循环将比数据库调用快得多。 数据库调用通常涉及通过lan或更糟的internet进行数据传输。每次都必须解析查询,以此类推

但是,如果在一个数据库查询中搜索了数千或数百万项,那么sql查询会快得多,因为数据库系统经过高度优化,可以处理大量数据。但别忘了为表创建索引


当有疑问时,您应该测量每种方法所需的时间,以及它是否能让您更好地了解性能的表现。

您的两条字符串有多长?正如其他人所说,“这取决于”,但一般来说,Adam是对的。如果您有任何疑问,并且您的应用程序无法运行,请对其进行配置。这将向您显示瓶颈,因此您无需猜测。您总是可以尝试两种方法并对它们进行基准测试(同样,如果且仅当您的应用程序不满足性能规范时)。事务在这方面起着重要作用。如果您可以将5个事务转换为1个事务,则可以节省大量时间。NoSQL数据库基本上从利用这一点中获得了所有收益。但是,是的,当涉及到网络通信时,更喜欢矮胖而不是健谈。