select count(*)比oracle中的select(*)花费更多的时间

Let*_*ee. 1 sql oracle toad

我有一个流水线功能.我有两个sql语句如下.第一个是从表中选择*,第二个是从表中选择计数(*).

SELECT *
  FROM table (es_feed_api_da.invoice_daily ('10-sep-2014'));

SELECT count(*)
 FROM table (es_feed_api_da.invoice_daily ('10-sep-2014'));
Run Code Online (Sandbox Code Playgroud)

我在toad中运行两个查询.我发现第二个(选择计数(*))比第一个花费相对更多的时间(选择*)有人可以向我解释原因..谢谢

Lal*_*r B 6

我在toad中运行两个查询

我发现第二个(选择计数(*))比第一个花费相对更多的时间(选择*)有人可以向我解释原因.

很明显,SELECT *SELECT COUNT(*)TOAD上执行它更快,因为TOAD是一个基于GUI的客户端工具,50 rows当你只是项目/选择行时,它只给你前几行(比如只在SQL Developer中).通过向下滚动查询结果,当您获取更多行时,经过的时间将不断增加.

另一方面,当你执行a时SELECT COUNT(*),它必须计算表中的所有行,而不是SELECT *仅返回TOAD中的前几行.

我没有TOAD,但我可以在SQL Developer中演示这种行为.

SELECT * 输出前50行:

在此输入图像描述

向下滚动到500行后:

在此输入图像描述

当您进一步向下滚动时,获取更多行所需的时间将会增加.