Oracle
有沒有更好的方法在選擇查詢中的其他列旁邊顯示“計數”記錄?
我有一個具有以下結構的表:
Test1(c_num number ,c_first_name varchar2(50), c_last_name varchar2(50))
1)有一個
normal index
上列c_num
。2)該表幾乎有
5 million
記錄。我有一個程序,如下所示。我想
Count(*)
與其他列一起顯示。我想知道是否有更好的方法可以做到這一點,以便我們能夠獲得更好的性能。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;
提前致謝
你在那裡使用的應該沒有問題,因為它是一個標量子查詢,這意味著它的結果將被自動記憶體,並且由於它只有 1 個不同的值,即使
test1
有 500 萬行,內部查詢也不會執行 500 萬次。但是您可以使用以下的分析版本
count
:select c_num, c_first_name, c_last_name, count(*) over () as members_cnt from test1;