哪个更贵?对于循环或数据库调用?

ben*_*njy 22 database performance for-loop

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

没有找到一个微秒的答案,只是我应该采取的方向的一般概念.

TIA.

Ada*_*kin 46

通常,您访问数据库的次数越少越好.这有很多原因,包括:

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

  • 正如其他人所说,“这取决于”,但总的来说,亚当是对的。如果您有任何疑问 ** 和 ** 如果您的应用程序性能不佳,请对其进行分析。这将向您显示瓶颈,因此您不必猜测。您可以随时尝试两种方式并对其进行基准测试(同样,当且仅当您的应用程序不符合性能规格时)。 (2认同)
  • 交易在这方面起着重要作用.如果您可以将5个事务转换为1,则可以节省大量时间.NoSQL数据库基本上可以利用它来获得所有的里程数.但是,是的,当谈到网络通讯时,更喜欢粗俗而不是聊天. (2认同)

Gre*_*ill 9

通常,在内存中执行的任何操作(for循环)都比在网络上完成的操作(数据库调用)更快.然而:

for i = 1 to num_users
    get user from database
end
Run Code Online (Sandbox Code Playgroud)

会慢一些

get users 1 to num_users from database (in one query)
Run Code Online (Sandbox Code Playgroud)

因为它的数量的时候,你问数据库的东西,真正重要的.


cod*_*nix 6

这在很大程度上取决于。

如果只有几百个项目,嵌套循环将比数据库调用快得多。数据库调用通常涉及通过局域网或更糟糕的互联网传输数据。每次都必须解析查询,依此类推。

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

如有疑问,您应该衡量每种方法所花费的时间,如果它只是让您更好地了解性能的表现。


Daw*_*uss 5

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