2015-06-26 47 views
0

我怎樣才能知道哪個數據庫中的表是最大的,誰擁有它?SQL Plus(Oracle 11)

SELECT 
    segment_name   TABLE_NAME,  
    SUM(bytes) table_size 
FROM 
    USER_SEGMENTS 
WHERE 
    SEGMENT_TYPE='TABLE' 
GROUP BY segment_name 

,或者我應該使用(TOP)或(rowcount

回答

0

ROWNUM不會幫助你在這裏爲rownums在訂購前計算,你想最大的表。

with q as (
    Select segment_name as table_name, 
     sum(bytes) as table_size 
    from user_segments 
    group by segment_name 
) select hlp.table_name, hlp.table_size 
from (Select q.*, dense_rank() over(order by q.table_size desc) as rn from q) hlp 
where hlp.rn = 1; 

這將這樣的伎倆。 with子句是一個公用表表達式(CTE),在別名「q」的下面選擇的上下文中有效。我想避免多次調用總和。

from子句中的子查詢中的dense_rank()函數與分區或順序的值相連,它們在本例中是降序表大小。

需要子查詢來選擇第一行。

關於使用數據字典表我沒有檢查結果。

相關問題