oracle执行全表扫描但是很快就返回了resutls

时间:2012-10-15 14:20:23

标签: oracle11g toad full-table-scan

当我打开TOAD并执行select * from table时,结果(前500行)几乎立即回来。但解释计划显示全表扫描,表格非常庞大。 结果怎么这么快?

2 个答案:

答案 0 :(得分:4)

通常,Oracle在开始返回数据之前不需要实现整个结果集(当然,Oracle必须具体化结果集才能在开始返回数据之前对其进行排序) 。假设您的查询不需要实现整个结果集,Oracle将开始将数据返回给客户端进程,无论该客户端进程是TOAD还是SQL * Plus还是您编写的JDBC应用程序。当客户端请求更多数据时,Oracle将继续执行查询并返回下一页结果。这允许TOAD相对快速地返回前500行,即使Oracle最终需要花费很多时间来执行整个查询并将最后一行返回给客户端。

答案 1 :(得分:0)

Toad仅返回前500行以提高性能,但如果您通过Oracle接口(例如JDBC)运行该查询,则会返回整个结果。我最好的猜测是,解释计划会在没有获得记录子集的情况下向您显示结果;这就是我如何使用它。除了我自己的经验之外,我没有其他的来源。