Sql 当返回超过251个结果时,简单Oracle查询开始运行缓慢
正如标题所暗示的,我有一个非常简单的Oracle查询,当我返回251个结果之后,它将在5秒钟内返回。我正在使用SQL Developer,并使用内置连接实用程序进行连接(此应用程序中没有用于ODBC连接的工具) 这里的查询速度很快(足够快)(Pau stu可以容纳大约4万行):Sql 当返回超过251个结果时,简单Oracle查询开始运行缓慢,sql,performance,oracle,Sql,Performance,Oracle,正如标题所暗示的,我有一个非常简单的Oracle查询,当我返回251个结果之后,它将在5秒钟内返回。我正在使用SQL Developer,并使用内置连接实用程序进行连接(此应用程序中没有用于ODBC连接的工具) 这里的查询速度很快(足够快)(Pau stu可以容纳大约4万行): 从pa_stu中选择*,其中rownum
从pa_stu中选择*,其中rownum<252;
据SQL开发者称,Oracle在.521秒内将数据返回给我
以下查询以及那些获取更大数据集的查询是罪魁祸首:
Select * From pa_stu Where rownum < 253;
从Pau stu中选择*,其中rownum<253;
据SQLDeveloper称,Oracle在5.327秒内将最后一次的数据返回给我
用于测试的所有查询都有相同的解释计划。也就是说,ROWNUMWhat的过滤器谓词是查询的等待事件?是否有可能一个数据库中的表在物理上是紧凑的(完整表扫描返回得很快),而另一个数据库中的分配空间很大,不包含任何数据(完整表扫描返回得很慢)?这两个查询是否具有相同的
解释信息?嗯,这个表中的行如何?“将评估的数字增加到大约1000”-你的意思不是暗示它只有1000?除非在rownum.PM 77-1上有数百万行和/或没有索引,否则有些内容是非常不完整的:两个查询都有相同的解释计划。也就是说,ROWNUMebyrob的过滤器谓词:表PA_STU(来自性能较差的查询)中总共有大约40000行。我从另一个Oracle实例测试的表现在大约有40万行。因此,它的数量是预期的10倍,但是,正如人们所预期的那样。
Select * From pa_stu Where rownum < 253;