oracle sql开发人员花时间获取所有记录

yws3nbqq  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(492)

我的查询将在不到一秒钟的时间内为oracle sql developer中的前50条记录提供输出。当我在查询结果中选择all(ctrl+a)时,获取所有记录需要120秒(165k)。你能建议我是否有任何范围来优化这个吗?
您能否解释一下查询是如何对结果的前50条记录进行查询的,然后对其余记录进行查询的?sql引擎是从数据块还是从结果缓存中获取其余记录?
多谢了,笨蛋

yvgpqqbh

yvgpqqbh1#

这里有很多因素,最明显的是记录是什么。165000条记录并不是一个可笑的超大问题,但每个记录有多大?请记住,这些记录必须从数据库中读取,通过网络,然后由sql开发人员自己处理。
当我遇到这个问题时,您通常可以看到sqldeveloper进程在尝试在其使用的任何内部进程中接收所有这些记录时,cpu和ram都会出现峰值。

ljsrvy3e

ljsrvy3e2#

对于一个简单的查询(比如 select * from some_table ),我假设今天的每个gui都做同样的事情—快速获取第一个“n”(50、100、500)行。它返回一个无序集并说“给你,看看你得到了什么”。
但是,如果它稍微复杂一点,例如。 select count(*) from some_table 或者 select * From some_table order by col1 ,则必须获取所有行,对于大型表,这需要时间。
此外,随着查询变得疯狂(连接、聚合等等),它也会使查询变得更复杂、更耗时。
那么-你认为165k的成绩能满足多少时间?ctrl+a确实需要时间。

icnyk63a

icnyk63a3#

SQLDeveloper在获取前50条记录后立即停止执行。但是你可以增加到200。
在sqldeveloper中,转到preferences->database->advanced->sql array fetch size(介于50和200之间)-->将值更改为200

相关问题