【发布时间】:2012-02-21 15:24:31
【问题描述】:
以下标准运行缓慢,令人无法接受。在不详细介绍表的主键或索引的情况下,您是否发现任何可以加快运行速度的特别之处?
def results = OpportunityApplication.createCriteria().list() {
isNull('dateDeleted')
or {
opportunityInst {
isNull('dateDeleted')
opportunity {
isNull('dateDeleted')
gt('advertisingEndDate', new Date())
eq('useOrgAsContact', false)
}
opportunityLocation {
isNull('dateDeleted')
eq("email", user.email)
}
}
if (isPartner)
{
opportunityInst {
isNull('dateDeleted')
opportunity {
isNull('dateDeleted')
gt('advertisingEndDate', new Date())
eq('useOrgAsContact', true)
organisation {
isNull('dateDeleted')
eq("email", user.email)
}
}
}
}
}
}
【问题讨论】:
-
在不了解您的数据库或需求的情况下,我只能建议您从数据库中删除大量数据或从查询中删除大量谓词
-
@Don 这几乎没有建设性,但我完全同意他需要发布数据库架构。
-
如果开启 SQL 日志记录,则可以获取生成的查询并在其上运行
EXPLAIN。这比仅仅猜测要好。
标签: grails grails-orm criteria