Oracle

有沒有更好的方法在選擇查詢中的其他列旁邊顯示“計數”記錄?

  • August 3, 2020

我有一個具有以下結構的表:

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;

引用自:https://dba.stackexchange.com/questions/273093