Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如果设置了setMaxResults,则休眠快速抓取_Oracle_Performance_Hibernate_Fetch - Fatal编程技术网

Oracle 如果设置了setMaxResults,则休眠快速抓取

Oracle 如果设置了setMaxResults,则休眠快速抓取,oracle,performance,hibernate,fetch,Oracle,Performance,Hibernate,Fetch,有一个简单的sql查询,它只获取一条记录。数据库是oracle 以下是简单的查询: select * from APPEALCASE appealcase0_ where appealcase0_.caseNumber='BAXXXXX00' and appealcase0_.DELETED_FLAG='N' 当我使用hibernate获取这一行时,响应时间是500毫秒,这是很慢的,因为它必须非常快,并且只有10毫秒。但是,当我将hibernate查询对象中的MaxResults设置为1时,

有一个简单的sql查询,它只获取一条记录。数据库是oracle

以下是简单的查询:

select *
from APPEALCASE appealcase0_
where appealcase0_.caseNumber='BAXXXXX00' and appealcase0_.DELETED_FLAG='N' 
当我使用hibernate获取这一行时,响应时间是500毫秒,这是很慢的,因为它必须非常快,并且只有10毫秒。但是,当我将hibernate查询对象中的MaxResults设置为1时,响应时间提高到15毫秒。
虽然我的问题已经解决了,但我仍然不明白将MaxResults设置为1如何大幅提高响应时间。有人能给我解释一下吗?

嗯,这对我来说很合乎逻辑。因为您告诉Oracle最多检索一条记录,所以一旦找到一条记录,它就会停止搜索更多记录。然而,如果不这样做,它将扫描整个表或索引,以查找与搜索条件匹配的所有记录


不过,您应该检查的是,您是否在caseNumber列上定义了索引。

是的,我在该列上有索引,即使在这之后,我也需要将MaxResults设置为1以获得良好的响应。我认为query.FetchSize为1应该会提高性能,而不是MaxResults api发挥了神奇的作用。只有在使用Hibernate时才可以看到缓慢的响应时间,或者从SQL*Plus发出相同的查询时也会出现这种情况?只有当查询通过jdbc连接运行时才会出现这种情况。