I have a table with below structure :
Test1(c_num number ,c_first_name varchar2(50), c_last_name varchar2(50))
1)There is a normal index
on c_num
column.
2)The table has nearly 5 million
records.
I have a procedure as you can see below. I want to display the Count(*)
along with other columns.I want to know if there are better ways of doing this so that we can have better performance.
create or replace procedure get_members(o_result out sys_refcursor)
is
begin
open o_result for
select c_num,
c_first_name,
c_last_name,
(select count(*) from test1) members_cnt -->Is there a better way instead of doing this?
from test1;
end;
Thanks in advance
Best Answer
What you used there should not cause a problem, because it is a scalar subquery, meaning its result would be automatically cached, and as it has only 1 distinct value, even if
test1
has 5 million rows, the inner query would not be executed 5 million times.But you can use the analytic version of
count
: