我有一个流水线功能。我有两个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'));
我在toad中运行两个查询。 我发现第二个(选择计数(*))比第一个花费相对更多的时间(选择*) 有人可以向我解释原因.. 感谢
答案 0 :(得分:6)
我在toad中运行两个查询
我发现第二个(选择计数(*))比第一个花费相对更多的时间(选择*)有人可以向我解释原因。
很明显,SELECT *
会比SELECT COUNT(*)
更快,因为您在 TOAD 上执行它,这是一个基于GUI的客户端工具只需投影/选择行时,只提供前几行(例如SQL Developer中只有50 rows
)。通过向下滚动查询结果获取更多行时,经过的时间会不断增加。
另一方面,当你执行SELECT COUNT(*)
时,它必须计算表中的所有行,而不是SELECT *
,它只返回TOAD中的前几行。
我没有TOAD,但我可以在SQL Developer中演示这种行为。
输出SELECT *
仅前50行:
向下滚动到500行后:
当您进一步向下滚动时,获取更多行所需的时间将会增加。