【技術メモ】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権限が必要です。