ホーム » ブログ » オラクル全てのテーブル名、レコード数及び各テーブル容量を確認する方法
このエントリーをはてなブックマークに追加
@2016/03/30

スポンサーリンク
本日の作業中で、データベースでのすべてのテーブル名称、レコード数及び各テーブルの使用容量を確認することがあった。
グーグルしたら、沢山の記事があった。しかし、皆は似ている記事を掲載している(笑)。
検索結果の3ページまで閲覧したが、結局、みんなは同一SQL文となる。
残念ながら、そのSQLは効率がかなり低く、SQLを実施したら、なんと3分以上がかかってしまい(テーブルデータ量が多いから)。
ここでは、かなり軽いSQL文を掲載します。
僕が実験した結果は、SQL処理時間は元の1/200ぐらい短くした。
では、データベースでのすべてのテーブル名称、レコード数及び各テーブルの使用容量を確認するSQL文で。コピペで実施してみてくださいね。

SELECT 
      a.table_name --テーブル名称
      ,a.num_rows --テーブルのレコード数
      , b.MB -- テーブルの利用容量
FROM user_tables a -- 全てのテーブル
      , (Select Segment_Name,Sum(bytes)/1024/1024 MB From user_segments Group By Segment_Name) b --テーブル名称&容量の集合
WHERE a.table_name = b.Segment_Name
ORDER BY a.num_rows desc, b.MB desc;

上記のコードはあまり考えずに作ったので、もっとカスタマイズすれば、より効率がよいSQL文を作れるかも。
(追記)SQL実施結果:


最後、他記事でのSQL文も提示します。

SELECT
distinct table_name,
TO_NUMBER(
extractvalue(
xmltype(
dbms_xmlgen.getxml('SELECT COUNT(*) c FROM '||table_name))
,'/ROWSET/ROW/C')) rec_ccount,
trunc(bytes/1024/1024,0) tablesize
FROM user_tables
join user_segments on user_segments.segment_name = user_tables.table_name
order by rec_ccount desc;

以上、オラクル全てのテーブル名、レコード数及び各テーブル容量を確認の方法でした。

WEBエンジニアを募集しています!

♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
11人
このエントリーをはてなブックマークに追加


★ 当記事を閲覧の方は下記の【関連記事】も閲覧していました。
とおりすがり 様
コメント@2017年08月10日
Gravatar-グローバルに認識されるアバター_zanmai.net
Analyze直後であれば、そのSQLが速いですね! num_rowsは必ずしも最新情報ではないので、だんだん実際とずれてきます。 最新の正確な行数を知りたければ、他のサイトのSQLになります。

お名前:

 

EMAIL:

 

URL:

 

認証コード:

zanmai.net-safecode

 


※会員の方は認証コードを要らないから、新規登録をオススメ!

check