dポイントプレゼントキャンペーン実施中!

baunceです。

とくに困っているわけではないのですが、ずっと気になって
いたのでここで質問させていただきます。

テーブルサイズを求める際に、USER_SEGMENTを参照して求めて
いる方があります。
この際、GROUP BY SEGMENT_NAME
と記載されている方が多いのですが、これは必要なのでしょうか。
USER_SEGMENTはSEGMENT_NAMEでユニークにはならないのでしょうか。
ちなみに私が携わっている環境ではGROUP BY してもしなくても
同じ結果となるようです。

以上よろしくお願いします。

A 回答 (1件)

TABLEとINDEXで同じSEGMENT_NAMEの場合もあるので、SEGMENT_NAMEではユニークにならないです。


たぶんSELECTする際にはSEGMENT_TYPEを指定するのでしょうから、これで重複する事はあまり無いと思いますが。

上記以外でも、パーティション表の場合、
各パーティションのSEGMENT_NAMEは同一になり、PARTITION_NAMEにそれぞれのパーティション名が入るようです。
当方の環境は10g XEなので、パーティション機能を利用することは出来ないのですが、
DBA_SEGMENTSを見てみたらSYSAUX表領域にそのようなデータがあることが確認できました。

参考になれば幸いです。
    • good
    • 0
この回答へのお礼

yamada_gさん
ありがとうございます。
なるほどですね!
たしかにその通りですね。

念のために今回確認する際に偶然気づいたのですが、
テーブルをcreateしたばかりの時は、user_segmentsに
入っていないのですね。驚きです。
なにかしらデータをINSERTしたタイミングでuser_segmentsに含まれるみたいです。
さらには全件レコードをDELETEしてもTRUNCATEしても
一度user_segmentsに入った後は消えないようです。

何かの参考になりましたらと思い記載してみました。
最後に、お礼が遅くなって申し訳ありませんでした。

お礼日時:2013/03/15 01:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!