sql - SQL对Hql查询进行非常大的关联

标签 sql grails hql

在我的应用中,存在以下关系:页面hasMany段落,我需要创建一个查询,该查询返回所有段落数少于限制的页面。问题在于,这些页面是在另一个应用程序中以大约每秒2个的速度创建的,并且段落表包含了更多的 200万行。所有标准grails方法(例如动态查找器和条件查询)都因其创建的不是最佳sql而挂起。在数据库控制台中,以下查询完成了该工作:

select * from ( select a.id, count(b.page_id) count from page a left join paragraph b ON a.id = b.page_id group by 1) sub WHERE sub.count <= 10 LIMIT 1000



而且我不会将此查询转换为HQL。我知道有可用的groovy sql,但是它的rows方法返回一个GroovyResult列表,而不是域类列表。有没有更好的方法来解决这个问题?

最佳答案

如果查询太复杂,我倾向于这样做:

def results = new Sql(dataSource).rows(SQL)*.id*.asType(Integer).colect(DomainClass.&get)

我知道它看起来并不太好,您可能不会因此而获得荣誉,但可以完成工作。
但是,如果您想使用更具表现力的内容,可以尝试JOOQ(http://www.jooq.org/)

关于sql - SQL对Hql查询进行非常大的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30534179/

相关文章:

sql - 优化PostgreSQL以进行快速测试

sql - 搜索多个表并在结果行中显示表名

grails - 如何从 spring-security 获取明文密码?

grails - 唯一约束违反,甚至failOnError设置为false

java - HQL - SELECT 子句上的 COUNT 不起作用

php - MySQL 查询帮助 - 将标签功能转换为 SQL 数据库

php - 使用 mysql 建立 php 错误数据库的最佳方法?

grails - 一个GSP中有多个<g:select>, Controller 内部的HQL中有多个参数

hadoop - 使用HQL将数据从一个表转移到另一个表

java - HQL 到 SQL : Querying an Oracle database in Netbeans