SELECT * FROM (
select *
from tableA
where ColumnA = 'randomText'
ORDER BY columnL ASC
) WHERE ROWNUM <= 25
在执行此查询时,由于某些Oracle优化,查询大约需要14分钟才能执行。如果我删除where子句,查询将在几秒钟内执行。表中的大多数列都有索引,包括上面提到的索引。我在使用hibernate时对查询的结构没有太大的灵活性。hibernate oracle rownum问题
此查询返回的结果瞬间也与正确的结果:
SELECT *
FROM (
select *
from tableA,
dual
where ColumnA = 'randomText'
ORDER BY columnL ASC
) WHERE ROWNUM <= 25
是有什么我能做的,使用Hibernate?
更新:我使用EntityManager.createQuery(),我也使用setMaxResults(25)和setFirstResult()。上面的查询是什么hibernate的查询看起来像,在观察日志
请问您可以发布HQL本身吗?您的原始查询是否包含集合的连接?此外,映射本身也很有用。 –
你能否提供两个查询的解释计划? –
@ctapobep http://pastebin.com/qjzu5HKc是HQL。正如你所看到的,没有联接。 – vritantjain