orm - Big O 与 N+1 有什么关系?

标签 orm theory big-o

Big 0 试图回答算法复杂度低下的问题。 N+1 描述了效率低下,因为它与数据库查询有关,在单独的查询中填充集合中的每个项目。

我目前正试图在不同的工作环境中理解这些概念中的每一个,现在我想知道是否有人可以解释这两个概念是否以任何方式相互关联?有人可以提供适用于它们的描述吗?

最佳答案

复杂性的大 O 符号是使用图灵机的操作数定义的,因此可以描述任何算法。 N+1 选择问题描述了低效的关系算法(查询),它总是需要对每条记录进行 N+1 次操作。由于该查询是一种算法,因此您可以分析其复杂性。

O(N+1)=O(N)

这意味着您具有线性复杂性。现在,如果我们使用正确的算法,对于两个表中的每一个,我们只需要对每条记录进行一次操作(选择)。复杂度为:

O(2)=O(1)

该算法具有恒定的复杂性。这表明,通过分析两种算法的复杂性,您会发现哪一种算法存在 N+1 选择问题。

清楚了吗?

关于orm - Big O 与 N+1 有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3693185/

相关文章:

javascript - 跨 Sequelize 关联播种数据

javascript - 字符串切片的算法复杂度是多少? (实用,真实世界)

Java:如何计算程序的时间复杂度?

java - Hibernate - 属于另外两个对象的映射对象(具有 2 个父对象的对象)

mysql - 如何使用 readbean ORM 执行内连接、左连接?

rest - 流媒体资源如何适应 RESTful 范式?

algorithm - 随着时间的推移平滑值 : moving average or something better?

frameworks - 规范与框架理论

mysql - 我在哪里可以阅读有关 MySQL 查询的时间复杂度(Big-O 表示法)的信息?

java - hibernate SQLquery 提取变量