-PR-
解決
済み

ビューテーブル

  • 困ってます
  • 質問No.43594
  • 閲覧数2209
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 35% (69/195)

初心者的な質問です。
オラクルデータベースで、検索速度向上の為に
ビューテーブルを作る事になりました。
ちょっといまいちわからないのですが、検索条件を
項目として作れば良いのでしょうか??
また、ビューテーブルを作って場合に、そのテーブルに
データが入るタイミングとかってどうなっているのでしょうか??
ビューを使わないとしたら
7つのテーブルを参照して、検索をしなければなりません。

環境は、Webです。
ASPからUNIXのオラクル8にアクセスしています。
補足する必要があれば言って下さい。
可能な限り書きます。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル11

ベストアンサー率 50% (173/345)

既にみなさんがおっしゃってますように、「ビュー」はそもそも検索速度を向上させるためのものではありません。

また、「ビュー」と「テーブル」は異なるものです。
実データが格納されているものを「テーブル」といい、SELECTステートメントをOracle内にコンパイルしたものが「ビュー」といいます。
もっとかみ砕いて言いますと、「ビュー」はよく使う検索手順を定義したもので日本語では「仮想表」と言います。
つまり、実際は「テーブル」にあるデータを定義された「ビュー」により検索した結果、あたかも「テーブル」のように見えているだけで、「ビュー」に対してデータを追加するわけでもありません。
基本的にデータを追加するのは「テーブル」に対して行います。

抜本的に検索速度を向上させるためには、通常は「インデックス(索引)」を使います。
これについて、詳しくはマニュアル等をご参照ください。

また、ビューを定義することにより、確かに少しだけ検索速度を向上させることも可能です。
既にSELECT分をサーバー内でコンパイルされているため、OracleがSELECT分の解析する必要がなく、ほんの0.1秒に満たないほど速くなります。
しかし、0.1秒速くしたところであまり意味はありませんので、ビューによって検索速度を向上させるという考え方は捨ててください。

また、ビューを定義することとは別問題ですが、SELECT * とせずに、必要なフィールドのみを検索すること、あるいは表を結合したり副問い合わせを使って速度を向上させることも可能です。
これに関してはSELECT文の書き方によって、検索効率を上げる方法ですね。
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル10

ベストアンサー率 42% (79/186)

言葉がよくわからないので説明お願いします。 ビューテーブルというのは、ビューのことでしょうか?それとも、8iからつかえるマテリアライズドビューのことでしょうか? もし、ただのビューのことであれば、検索速度の向上にはつながりません。(向上するとすれば、長いSQL文を投げるのが短くなる文のネットワークの転送速度分のみです) ビューは、そのビューへアクセスされたときに、SQL文を解析し各テーブルを ...続きを読む
言葉がよくわからないので説明お願いします。

ビューテーブルというのは、ビューのことでしょうか?それとも、8iからつかえるマテリアライズドビューのことでしょうか?

もし、ただのビューのことであれば、検索速度の向上にはつながりません。(向上するとすれば、長いSQL文を投げるのが短くなる文のネットワークの転送速度分のみです)
ビューは、そのビューへアクセスされたときに、SQL文を解析し各テーブルを参照しに行きます。
補足コメント
senna13

お礼率 35% (69/195)

普通のビューです。
検索速度の向上にはつがらないのですか・・・・・・・
投稿日時 - 2001-02-22 18:57:21


  • 回答No.2
レベル10

ベストアンサー率 35% (56/160)

ビューというのは、要はSELECT文に名前がついているようなものです(?)。 モデル的なCREATE VIEWは、こんな感じですが...  CREATE VIEW ビュー名(    項目名1   , 項目名2   , 項目名3   ...  ) AS SELECT    別名1.列名1   , 別名1.列名2   , 別名2.列名1   ...  FROM テーブル名1 別名 ...続きを読む
ビューというのは、要はSELECT文に名前がついているようなものです(?)。
モデル的なCREATE VIEWは、こんな感じですが...

 CREATE VIEW ビュー名(
   項目名1
  , 項目名2
  , 項目名3
  ...
 ) AS SELECT
   別名1.列名1
  , 別名1.列名2
  , 別名2.列名1
  ...
 FROM テーブル名1 別名1
  , テーブル名2 別名2
  ...
 WHERE 結合条件式など
 ;

要するに、AS 以下のSELECTで抽出した内容に、ビュー名でアクセスできる、
ということです。ビューでアクセスしても、内部で抽出の処理が走ります。
ビューを作ったところで、オラクルが抽出内容を常時保持するわけでは
ありません。一般にビューは、レスポンス改善には、役立たないものです。
むしろ、参照するテーブルに貼られているINDEXとか、テーブルの
パーティショニング等に配慮すべきなのかもしれません。
(状況によるので、ハッキリしたことは言えませんが...)

# SELECT文をネストさせると、レスポンスが向上する場合もあります。
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ