对于一个简单的查询(比如 select * from some_table ),我假设今天的每个gui都做同样的事情—快速获取第一个“n”(50、100、500)行。它返回一个无序集并说“给你,看看你得到了什么”。 但是,如果它稍微复杂一点,例如。 select count(*) from some_table 或者 select * From some_table order by col1 ,则必须获取所有行,对于大型表,这需要时间。 此外,随着查询变得疯狂(连接、聚合等等),它也会使查询变得更复杂、更耗时。 那么-你认为165k的成绩能满足多少时间?ctrl+a确实需要时间。
3条答案
按热度按时间yvgpqqbh1#
这里有很多因素,最明显的是记录是什么。165000条记录并不是一个可笑的超大问题,但每个记录有多大?请记住,这些记录必须从数据库中读取,通过网络,然后由sql开发人员自己处理。
当我遇到这个问题时,您通常可以看到sqldeveloper进程在尝试在其使用的任何内部进程中接收所有这些记录时,cpu和ram都会出现峰值。
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确实需要时间。
icnyk63a3#
SQLDeveloper在获取前50条记录后立即停止执行。但是你可以增加到200。
在sqldeveloper中,转到preferences->database->advanced->sql array fetch size(介于50和200之间)-->将值更改为200