SELECT * FROM (
select *
from tableA
where ColumnA = 'randomText'
ORDER BY columnL ASC
) WHERE ROWNUM <= 25
在执行此查询时,由于 Oracle 的一些优化,查询大约需要 14 分钟才能执行。如果我删除 where 子句,查询将在几秒钟内执行。表的大多数列都有索引,包括上面提到的那些。当我使用休眠时,我对查询的结构没有太大的灵活性。
此查询也立即返回结果,结果正确:
SELECT *
FROM (
select *
from tableA,
dual
where ColumnA = 'randomText'
ORDER BY columnL ASC
) WHERE ROWNUM <= 25
有什么我可以做的,使用休眠?
更新:我使用 EntityManager.createQuery(),也使用 setMaxResults(25) 和 setFirstResult()。上面的查询是hibernate查询的样子,观察日志