みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

oracleのUSER_TABLESのNUM_ROWSって?

USER_TABLESのNUM_ROWについて教えてください。

リファレンスマニュアルを見るとNUM_ROWは表内の行数をあらわすようです。

実行してざっと見てみるとCOUNT(*)で件数を取ったのと同じ値になるケースが多いですが、
(NULL)のケースもあります。
違う数値の場合もあります。

そのNULLの表はデータ0件なのかと思ったら、しっかりと結構なデータ量があったりします。

NUM_ROWは表内の行数=レコード数かと思ったのですがどうも違うようです。

USER_TABLESのNUM_ROWとは何でしょうか?


<イメージ>

SELECT TABLE_NAME, NUM_ROWS FROM USER_TABLES WHERE TABLE_NAME = 'TBL1'

TABLE_NAME NUM_ROWS
---------- --------
TBL1 (NULL)
TBL2 35


SELECT COUNT(*) FROM TBL1

count(*)
--------
980



SELECT COUNT(*) FROM TBL2

count(*)
--------
35

投稿日時 - 2007-04-03 14:00:51

QNo.2890473

暇なときに回答ください

質問者が選んだベストアンサー

こんにちわ。
昔仕事でOracle 8.0.6(Solairs版)を触っていました。

その頃の記憶なんですが、たしかnum_rowsはAnalyzeを取ったときに数値が入ったような....
件数の不一致が発生しているテーブルに対して、過去にAnalyzeを取ったことはありませんか?
もしそうであれば、Analyzeを取り直せば一致すると思います。
#もっとも、運用してゆくと再び食い違いが発生してきますが...

投稿日時 - 2007-04-03 15:28:31

お礼

なるほど、Analyze単位での更新でしたか。
意味が分かりました。
ありがとう御座います。

投稿日時 - 2007-04-04 18:22:02

ANo.1

このQ&Aは役に立ちましたか?

7人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問