プロが教えるわが家の防犯対策術!

環境はOracle8iです。

とある業務で、グループ関数を使ったビュー表を作り、更にそこからグループ化する、というのをやっています。

CREATE VIEW V_emp AS
SELECT A , B , SUM(C) AS X FROM emp
GROUP BY A , B ;

を作った後に、

SELECT A , SUM(B) , SUM(X) FROM V_emp
GROUP BY A ;

と問い合わせる、みたいなかんじです。

なんとなく、一方で集計結果を維持したまま、もう一回集計をかけるというのが、
データベースにとっては負担のような気がするのですが、実際はどうなのでしょう?
若しくはもっとスマートなやり方があるのでしょうか。

A 回答 (2件)

こんにちは。


負荷がかかっているかどうなのかについては
Oracleのパフォーマンスチューニングの調査フェーズで、
tkprofとかSQLトレースを使用して、どのようなアクセスパス
になっているかを行います。これにより、SQLに対してのCPU使用率や
論理・物理読込回数が明確になります。
(つまり、ご自身で確認できるという事です。)

わりと、簡単にできますので一度トレースをとってみてはいかが
でしょうか?

参考URL:http://www.systeminfinity.co.jp/sub/tech/doc/ora …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ご紹介いただいたページですが、申し訳ない、1行も理解出来ませんでした。
出直します。

お礼日時:2008/06/19 22:27

後者の,Aについてのグループ集計結果は,ビュー表を経由してselectを二重にしなくても次でいけますが,そういうご質問ですか?


select a, sum(b), sum(C) from EMP group by a;
    • good
    • 0
この回答へのお礼

いつも下手くそな例を出してしまって申し訳ないのですが、
集計の結果をもう一度集計することが(負荷という視点から)良いことなのかどうか、
という意味合いです。
副問い合わせの入れ子をする時も同じ気持ちになるのです。

お礼日時:2008/06/18 14:11

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