问题标签 [eager-loading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Rails:如何在此处最小化 DB 命中?急切加载不适用
这个问题可能有点具体,但我认为从一般 pov 来看也很有趣。
在 Rails App 中,用户可以订阅其他用户。当我显示用户列表时,我必须检查当前用户是否订阅了列表中的用户。如果他订阅了,我会显示取消订阅按钮,反之亦然。
因为整个事情取决于当前用户,所以我不能使用急切加载。因此,当我在列表中显示 20 个用户时,我在 DB 上生成了 20 个额外的命中,这在我看来是不好的做法。
我正在考虑解决这个问题的好方法。到目前为止,我想出的最佳解决方案是在登录期间加载 current_user 在会话中订阅的用户的 id,然后检查每个 user.id 与会话中的 id。但是,当用户订阅了很多人时,这可能会导致其他问题。此外,我不确定这是否是加载所有订阅的最佳方式,即使用户在此会话期间可能永远不会查看用户列表。
我想到的下一个最好的事情是做同样的事情,但不是在登录期间,而是在加载用户列表时。
你怎么看?
ruby-on-rails - Rails 急切加载,可能的错误
在我的 Rails 2.3.2 应用程序中
我有 2 个模型:
出于某种原因,当我尝试急切加载我的评论时,我收到了一个错误
来自 Association_preload.rb 第 228 行
这是一个已知问题,还是我做错了什么或不受支持?
我似乎在以下位置找到了一些关于此的讨论:http ://groups.google.com/group/maine-ruby-users-group/browse_thread/thread/796cf58b62f9bc52
php - 渴望加载与使用 PHP、SQLite 的许多查询
我有一个有 n+1 查询问题的应用程序,但是当我实现一种急切加载数据的方法时,我发现绝对没有性能提升。我确实使用身份映射,所以对象只创建一次。
这是约 3000 个对象的基准。
这是我使用急切加载时的一个。
所以我的问题是
- 当涉及到小查询时,SQLite 是否神奇地快如闪电?(我习惯于使用 MySQL。)
- 这对任何人来说都是错误的吗?急切加载不应该提供更好的性能吗?
java - 为什么在 Struts 1.2.7 中延迟实例化 MessageResourcesFactory?
由于存在双重检查锁定问题,因此我们必须使用同步来保证对以下方法(org.apache.struts.util.MessageResources 类)的并发访问:
惰性实例化
为什么不使用:
渴望实例化
进而:
它将允许对方法 getMessageResources 的并发访问,至少在我的情况下,它可能会被调用很多次。
不使用同步的含义在这里:
c# - 在自引用表中急切加载 Linq 到 SQL 实体
我有 2 个相关的 Linq to SQL 问题。请看下图,看看我的模型是什么样子的。
问题 1
我想弄清楚如何在我的 类/表上急切地加载该User.AddedByUser
字段。User
该字段是根据User.AddedByUserId
字段上的关系生成的。该表是自引用的,我试图弄清楚如何让 Linq to SQLUser.AddedByUser
急切地加载属性,即,每当User
加载/获取任何实体时,它还必须获取 User.AddedByUser 和 User.ChangedByUser。但是,我知道这可能会成为一个递归问题......
更新 1.1:
我尝试按如下方式使用 DataLoadOptions:
但这不起作用,我在第 2 行得到以下异常:
例外是不言自明的——对象图不允许是循环的。另外,假设第 2 行没有抛出异常,我很确定第 3 行会,因为它们是重复的键。
更新 1.2:
以下内容也不起作用(不与上面的更新 1.1结合使用):
它抛出以下不言自明的异常:
我现在真的不知道如何解决这个问题。请帮忙!
问题2
在我的数据库中的每个其他表上,因此 Linq to SQL 模型,我有两个字段,Entity.ChangedByUser
(链接到Entity.ChangedByUserId
外键/关系)和Entity.AddedByUser
(链接到Entity.AddedByUserId
外键/关系)
如何让 Linq to SQL 急切地为我加载这些字段?我需要对我的查询进行简单的连接吗?还是有其他方法?
Linq to SQL 急切加载自引用表 http://img245.imageshack.us/img245/5631/linqtosql.jpg
ruby - Datamapper中多对多关系的战略渴望加载?
我正在使用DataMapper,一个用于 ruby 的开源 ORM,我很想从头开始。目前,DataMapper 可以将战略渴望加载(SEL)用于一对多关系,但不能使用 N+1 查询发生的多对多关系。我想设法使这项工作正常工作,但我找不到在哪里做。所以两部分问题:
- 如何运行测试套件以使其显示失败(注意,现在所有应该失败的规范都标记为待处理)?
- SEL 在哪里以及如何为一对多关系实施?
c# - 在 NHibernate 中急切地加载子集合和子集合
我遇到了 NHibernate 试图加载一个小的数据层次结构的问题。我的域模型如下所示:
我想为给定的 GrandParent 加载所有父母和孩子。此 Linq-to-NH 查询创建正确的 SQL 并按预期加载 GrandParent:(该示例假设祖父母有 2 个父母,每个父母有 2 个子对象 - 所以总共有 4 个子对象)。
grandparent.Parents 集合包含 4 个项目,其中 2 个是重复项。似乎 DistinctRootEntityResultTransformer 仅适用于 1 级深度的集合,因此 Parent 集合的复制取决于每个父对象有多少子对象。
是否可以让 NH 仅包含不同的 Parent 对象?
非常感谢。
grails - 多对多关系的急切加载 - Grails (GORM)
每本书可以有很多作者。每个作者都可以写很多本书。
现在我什么时候可以做:
现在我想我应该能够带走每个作者并获得与他相关的书籍:
你现在看到它会递归(导致stackoverflow)。有谁知道它是如何工作的,当它进行急切的获取时?
ruby-on-rails - 如何确定 Rails 关联是否是急切加载的?
有谁知道确定 Rails 关联是否已被急切加载的方法?
我的情况:我有一个结果集,有时其中一个关联是渴望加载的,有时不是。如果它不是预先加载的,那么我想使用 ActiveRecord 的查找来查找关联。如果它是急切加载的,我想使用检测。
例如,假设我的商品模型中有一个 shipping_info 对象的“has_many”数组。然后:
如果项目是预先加载的,最有效的加载是:
如果项目不是急切加载的,最有效的加载是:
但是除非我知道它是否被急切加载,否则我不知道调用哪个代码来有效地获取记录。如果我在没有急切加载的情况下使用第一种方法,那么我必须查找比必要更多的数据库记录。如果我在急切加载时使用第二种方法,那么我急切加载的对象将被忽略。
entity-framework - 实体框架中的急切加载在复杂查询中失败
以下查询在我执行时无法加载表:
我找到了一些与该问题相关的文章,即Alex James 的文章“如何使 Include 真正包含”。该解决方案附带一个警告:
为此,您的最终选择必须是实体,即选择帖子而不是选择新{...}
这显然是上述代码块的问题。对于这个问题,是否有任何其他已知的解决方法不会破坏急切加载?