gpt4 book ai didi

Grails 标准与 findAll 和 findAllBy 基准

转载 作者:行者123 更新时间:2023-12-02 14:25:03 24 4
gpt4 key购买 nike

我在网上搜索,但找不到比较 grails 标准 findAll 和 findAllBy 的基准

那么最快的是什么?

// groovy enhance collection method
parent.childs.findAll{ it.someProperty == someValue }

或者
Child.findAllByParentAndSomeProperty(parent, someValue)

或者
Child.createCriteria().list{
eq('parent', parent)
eq('someProperty ', someValue)
}

更新

由于 parent.childs.findAll 是一个 groovy 增强的收集方法,它不调用数据库。像:
[1,2,3,4,5].findAll{ it > 3} == [4, 5]

所以我是更好地调用 de DB 还是遍历已经加载的集合。

最佳答案

他们都是一样的。这是因为您的所有示例都是相同底层实现的包装器 - 它们都在引擎盖下转换为“真正的”Hibernate Criteria 查询(或您正在使用的 NoSQL 库中的类似核心实现)。它们都是语法糖。
findAllByParentAndSomeProperty第一次运行时会比其他方法慢几毫秒,因为有一些工作涉及将方法名称解析为标准参数,但是动态查找器被缓存以供将来调用,因此在一般情况下是无关紧要的。

但正如评论者指出的那样,您最好查看正在运行的实际 SQL,并在担心性能时进行适当的基准测试。一般情况并非适用于所有情况,并且很容易创建一个看起来很高效但会产生意想不到的额外数据库流量和缓慢的查询。

关于Grails 标准与 findAll 和 findAllBy 基准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18264773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com