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

标签 java sql oracle hibernate jpa

也许任何人都可以帮助我解决使用 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/

相关文章:

sql - 在oracle中后台处理文件时如何更改日期格式

sql - generate_series() 在 DB2 中等效

c# - ORA-01843 : not a valid month -- working on DB but not when doing the same on asp. 网页

sql - Oracle 加入时查询速度慢,拆分成两个查询时速度快

java - 如何可靠地从 Guava LoadingCache 中删除记录?

java - 使用存储在变量中的嵌套类实例访问外部类实例?

java - 将二维数组中的所有元素向下移动

java - 没有标题的 DialogFragment 缩小对话框宽度

sql - PostgreSQL 中的条件累积平均

oracle - ORA-03001 : unimplemented feature when converting XMLTYPE to NCLOB from table