Oracle11g 在Oracle SQL Developer中,为什么运行语句比运行脚本快?

Oracle11g 在Oracle SQL Developer中,为什么运行语句比运行脚本快?,oracle11g,oracle-sqldeveloper,Oracle11g,Oracle Sqldeveloper,我们对一个有7000条记录的表进行了简单的查询。该查询访问了大约1400条记录 当我按下Run语句时,执行时间

我们对一个有7000条记录的表进行了简单的查询。该查询访问了大约1400条记录

当我按下Run语句时,执行时间<1秒


当我按RunScript(F5)时,需要22秒。这是正常的还是网络问题?

当您使用Run时,数据网格仅获取前50行(默认情况下)。当您向下翻页时,它会进行进一步的批处理获取,这需要额外的时间。它将重复该操作29次,以获得所有1400行,但按需执行

当您运行脚本时,所有行(达到您设置的任何限制;我认为默认值仍然是5000)都是一次性获取的,因此它需要花费更多的时间通过网络直接获取数据


如果您最后查看数据网格中的所有行,那么将数据从DB服务器传输到PC所花费的时间是相同的,只是将数据分成块;额外的行程可能会带来更多的开销(取决于每个批中通过JDBC获取的行数)。如果向下翻页到网格的底部,请查看网格顶部显示的“获取的行”;当脚本运行到最后时,比较“所有的行都在…”时间与脚本运行。

当使用run时,数据网格只获取前50行(默认情况下)。当您向下翻页时,它会进行进一步的批处理获取,这需要额外的时间。它将重复该操作29次,以获得所有1400行,但按需执行

当您运行脚本时,所有行(达到您设置的任何限制;我认为默认值仍然是5000)都是一次性获取的,因此它需要花费更多的时间通过网络直接获取数据


如果您最后查看数据网格中的所有行,那么将数据从DB服务器传输到PC所花费的时间是相同的,只是将数据分成块;额外的行程可能会带来更多的开销(取决于每个批中通过JDBC获取的行数)。如果向下翻页到网格的底部,请查看网格顶部显示的“获取的行”;当它结束时,比较脚本运行时的“所有获取的行…”。

OK,这将解释两个按钮之间的差异。非常感谢。但现在,他们使用web服务运行此查询。我假设获取数据需要1秒,但将1400条包含3个字段左右的记录传输到请求系统是否需要20-30秒?查询本身或网络的性能与您是运行脚本还是运行脚本无关。在22秒内获取1400行,在运行时大约在0.75秒内获取50行(更具体地说,这取决于查询以及它是否可以在完成之前开始返回结果)。我不确定web服务与SQL Developer有什么关系。我想您已经展示的是,在SQL Developer中运行需要相同的时间(~20秒)按照web服务的方式获取所有1400行;这可能会消除一些可能的问题。如果在DB服务器上通过SQL*Plus运行时需要相同的时间,这将使网络真正脱离等式,这意味着您需要调查实际查询?这里是我的查询选择字段1,字段2,来自mytable,其中字段3为null或field3=1或field3=3且field2不为空。当我从mutable中选择count()时,需要0.05或更少,计数为7000条记录。当我选择count()时从mytable(其中字段3为null或字段3=1或字段3=3且字段2不为null)开始,需要23秒。什么需要这么长时间?这与您在此处提出的问题是一个单独的问题,但如果您提出一个新问题,则需要提供更多详细信息—例如表结构、执行计划,其中是否有虚拟列(这是我能立即想到的唯一可能产生这种效果的想法),等等。好的,这将解释这两个按钮之间的区别。谢谢。但是现在,他们使用web服务运行此查询。我假设获取数据需要1秒,但是将1400条包含3个字段左右的记录传输到请求系统是否需要20-30秒?查询本身或网络的性能与whet无关她的YouUs Run或Run脚本。在22秒内获取1400行,使用Run大约在0.75秒内获取50行(更具体地说,这取决于查询以及它是否可以在完成之前开始返回结果。我不确定web服务与SQL Developer有什么关系。我想您已经展示的是,在SQL Developer中运行需要相同的时间(~20秒)按照web服务的方式获取所有1400行;这可能会消除一些可能的问题。如果在DB服务器上通过SQL*Plus运行时需要相同的时间,这将使网络真正脱离等式,这意味着您需要调查实际查询?这里是我的查询选择字段1,字段2,来自mytable,其中字段3为null或field3=1或field3=3且field2不为空。当我从mutable中选择count()时,需要0.05或更少,计数为7000条记录。当我选择count()时从mytable(其中字段3为null或字段3=1或字段3=3且字段2不为null)开始,需要23秒。什么需要这么长时间?这与您在此处提出的问题是一个单独的问题,但如果您提出一个新问题,则需要提供更多详细信息—例如表结构、执行计划,其中是否有虚拟列(这是我能马上想到的唯一可能有这种效果的想法)等等。