tsalakh ain sus noam Huyah ol guf

勉強会のメモ。その他備忘録。参考にさせて頂いたサイトや資料はリンクさせて頂いていますが不都合があればご連絡ください。

【技術メモ】DBに負荷をかけない、レコード数の求め方

DBに負荷をかけない、レコード数の求め方

SELECT(*)すら打ちたくないときの、レコード数(統計値)の求め方。

DBに負荷はほとんどかかりません。

xxxxxxは対象のオーナー、yyyyyyは対象のテーブルに置き換えてください。

①アナライズ実施時のレコード数

select
 num_rows
from
 dba_all_tables
where
 owner='xxxxxx'
 and table_name='yyyyyy';

②アナライズ実施後の追加/削除レコード数

select
 m.inserts
,m.deletes
from
 sys.mon_mods_all$ m
,sys.user$ u
,sys.obj$ o
where
 o.obj#=m.obj#
 and u.user#=o.owner#
 and u.name = 'xxxxxx'
 and o.name='yyyyyy';

③現在のレコード数を算出

レコード数 = ①.num_rows + ②.inserts - ②.deletes
  • 統計値なので誤差はあります。
  • sys.XXビューのアップデートタイミングにより、タイムラグもあります。
  • selectするには、select any dictionary権限が必要です。