gpt4 book ai didi

java - 使用 Hibernate 和 Oracle 的奇怪查询

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:29 24 4
gpt4 key购买 nike

也许任何人都可以帮助我解决使用 hibernate 和 oracle 的一个非常奇怪的行为。这是我第一次使用 hibernate 和 oracle,所以这对你来说可能是一个简单的步骤:)。

但是让我们详细了解一下。一个简单的 count(*) 结果:

 select * from ( select count(*) as col_0_0_ from TABLE tbl ) where rownum <= ?

这不是什么大问题,但如果我有一个要返回的行数有限的选择,它看起来像这样:

select * from ( select SOME_FIELDS from TABLE tbl order by tbl.ID desc ) where rownum <= 20

而且这不是很快。如果我按照自己的喜好去做

select * from from TABLE tbl where rownum <= 20 order by tbl.ID desc 

它和预期一样快。有什么可以反对的吗?也许我的实体需要更多标签?

谢谢!

最佳答案

第一个查询没有多大意义,因为 select count(*) 仅返回 1 行。

第二个可能是您真正想要的。

第三个看起来像第二个,但根本不做同样的事情。 order by 子句应用在 where 子句之后。因此,第三个查询从表中选择前 20 行,没有任何特定顺序,并按 ID 对这 20 行进行排序。第二个查询从表中选择行,按 ID 对它们进行排序,然后仅返回这些排序行中的前 20 行。

关于java - 使用 Hibernate 和 Oracle 的奇怪查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10513801/

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