• ベストアンサー

ビューテーブル

mfukuの回答

  • ベストアンサー
  • mfuku
  • ベストアンサー率50% (173/345)
回答No.3

既にみなさんがおっしゃってますように、「ビュー」はそもそも検索速度を向上させるためのものではありません。 また、「ビュー」と「テーブル」は異なるものです。 実データが格納されているものを「テーブル」といい、SELECTステートメントをOracle内にコンパイルしたものが「ビュー」といいます。 もっとかみ砕いて言いますと、「ビュー」はよく使う検索手順を定義したもので日本語では「仮想表」と言います。 つまり、実際は「テーブル」にあるデータを定義された「ビュー」により検索した結果、あたかも「テーブル」のように見えているだけで、「ビュー」に対してデータを追加するわけでもありません。 基本的にデータを追加するのは「テーブル」に対して行います。 抜本的に検索速度を向上させるためには、通常は「インデックス(索引)」を使います。 これについて、詳しくはマニュアル等をご参照ください。 また、ビューを定義することにより、確かに少しだけ検索速度を向上させることも可能です。 既にSELECT分をサーバー内でコンパイルされているため、OracleがSELECT分の解析する必要がなく、ほんの0.1秒に満たないほど速くなります。 しかし、0.1秒速くしたところであまり意味はありませんので、ビューによって検索速度を向上させるという考え方は捨ててください。 また、ビューを定義することとは別問題ですが、SELECT * とせずに、必要なフィールドのみを検索すること、あるいは表を結合したり副問い合わせを使って速度を向上させることも可能です。 これに関してはSELECT文の書き方によって、検索効率を上げる方法ですね。

関連するQ&A

  • 【Access】テーブルの参照について

    Accessでツール作成をしたいのですが当SWの使用経験が浅く使い方が分からず困っています。 AccessにはOracleでいうviewのような機能はAccessには存在するのでしょうか。 リンクテーブルという機能があるのは知っていますが、リンク元・先でデータベースが別でなければならないと理解しています。 私がやりたいことは、同じデータベース内に存在するテーブルを複数参照し、「一つのテーブルに見せる」といった動作です。 以下、参考に記載します。(やりたいこと) (1)TBL1(input):カラム1,カラム2 (2)TBL2(input):カラム3,カラム4,カラム5 (3)TBL3(TBL1+TBL2):TBL1.カラム1,TBL1.カラム2,TBL2.カラム5 →TBL3をOracleでいうviewの形で持ちたい 良い方法があればご教示ください。

  • テーブル領域をrmコマンドで消してしまいました.

    Oracle(ver8)データベースを使って、sqlコマンドでテーブルを作成後、UNIXのrmコマンドでテーブル領域を削除しまいました。 そのため、Oracle起動時にこの領域をマウントしようとして失敗してしまい データベースにアクセスできません。 復旧方法をご教授下さい。 テーブルは不要なので、Oracleデータベースにこの領域が削除されていることを認識させたいのです。

  • OracleのViewの作り方

    OracleのViewについてですが。。 ‘あ行’という名前のテーブルと‘か行’という名前のテーブルがあるとします。 ‘あ行’テーブルには‘あ’,‘い’,‘う’という列名があり、 ‘か行’には‘か’,‘き’,‘く’,‘あ’,‘い’という列名があるとします。 以上の2つのテーブルから‘ひらがな’というViewを作りたいとします。 このViewの条件としては‘あ行’から‘あ’,‘い’をselectし、‘か行’からは‘あ行’と‘か行’のそれぞれの‘あ’列の項目が同じであるレコードから‘か’と‘あ’と‘い’をselectしてきます。この時‘あ’という列の項目内容は分かっていて、その項目が記載してあるレコードに‘い’の項目内容をupdateしたいとするとどのようにViewを書けばよいのでしょうか?あくまでもそれぞれのテーブルに直接‘い’項目を書くのではなくてViewにおいてUpdateで書きたいのですが。

  • AccessからOracle DB(View)を参照する方法について

    accessでOracleDBに接続し、アプリケーションを作ろうとしております。 OracleDBのViewを参照し、Accsess側で編集をしようとしております。 AccessからOracleのビューを参照できるようにしましたが、そのビューと accessのテーブルから作成されたクエリが新規レコードの作成ができません。(Accessの画面で「→*」のボタンがグレーアウトになっている) どうすれば新規レコードを追加できるようになりますでしょうか? また、できない場合、どのような代替案がありますでしょうか? すみませんがご回答、宜しくお願いします。

  • オラクルテーブルで受け付けない文字

    ACCESS97のデータベースで オラクルのテーブルを使用しています。 アクセスのテーブルではクエリーが実行できたのですが (実行時に読込めた) 名前を変更して、(リンクしている)オラクルテーブルで実施すると 上手く行きません。 オラクルテーブルでは、受けつけない文字があると聞いたことがあります。 例えば、 " や ' など。 このような文字 一覧がわかるページ等 ないでしょうか? 

  • MS-Accessのリンクテーブルで更新

    MS-Accessのリンクテーブルで更新 MS-Accessのリンクテーブルを使用して、 Oracleデータベースの表に対して 値の更新をしようとしていますが、 更新が競合しているというメッセージが出て、 更新できません。 また、値の更新をしようとしているタイミングで、 Oracleデータベース側のリンクテーブル対象表に アクセスしている処理はなく、 更新が競合していることありません。 ODBCドライバの設定では、読み取り専用設定は 実施してない点は確認しています。 使用しているソフトウェアの各バージョンは以下になります。 Access 2007 Oracle 10.2.0.4.0 WindowsXP SP3 ODBCドライバ 10.02.00.01 リンクテーブルからの更新自体がそもそも出来ないのでしょうか? MS-Accessを使用してOracleデータベースの表の値を更新したいと思っているのですが、 解決方法をご存知の方がいらっしゃいましたら、教えていただけないでしょうか?

  • Oracleによるリンクテーブルでの接続エラー

    よろしくお願い致します。 今、ASPによるWebシステムを作成しています。 データはSQLserver・accessによって管理しています。 システムを動作させているサーバをAとします。 同じネットワーク上のBというサーバのOracleDB内の、ある情報の入ったテーブルを、A上のaccessからリンク(地球のマーク)しています。 そのリンクテーブルを参照して、AのWebシステムを動作させるところ(Select文によるデータ抽出)があります。 しかし、エラー「ODBC--"XXXXX"への接続が失敗しました。」と出てしまいます。 接続にはODBCを利用しており、accessを開いて直接テーブルを見ようとすれば見れます。 しかし、Web上で動作させようとするとエラーが出ます。 何が原因と考えられますでしょうか? ご教授お願い致します。 補足ですが、 OracleのバージョンはA、B共に同じです。 A:Win2000server 、B:Win2003server tnsnames.oraは修正してあり、テーブルも参照は出来ているので問題ないと思います。 Aのaccess(リンクテーブル)からBのテーブルを参照するにはパスワードが必要ですが、レジストリの設定により入力不要にしています。

  • AccessからOracleのテーブルに半角スペースを入力したい

    Oracle8.0.5のデータベースがあり、そのテーブルにAccess97経由でデータを登録しようとしています。なお、ODBCドライバにはOracleのドライバを使用しています。 このテーブルには CHAR(1) NOT NULLのフィールドがあり、この項目にはデータとして半角スペースをセットする場合があるのですが、Accessのデータシートビューで当該項目に半角スペースを入力して次の項目に進もうとすると次のエラーが出て入力できません。 「バリアント型ではない変数にNull値を代入しようとしました」 たぶんODBCドライバ側で半角スペースにトリムをかけてしまうためだと思われるのですが、どうにか半角スペースを入力する方法はないものでしょうか?

  • ACCESSのテーブルを読んでる間、ロックする方法は?

    WINDOWS XP、VB6.0、SP5、で開発しています。 データベースにアクセスを使っていて、 あるテーブルをSELECT文で抽出しているのですが、 それと同時に、他のPCがそのテーブルを見ようと同じ処理をしてきた場合に、 見れないようにロックしたいのですが、 方法が全然分かりませんでした。 調べた限りでは、SQLやオラクルだと出来るとか。 アクセスでも何らかの方法でできないでしょうか? どうぞ、ご教授よろしくお願いしますm(_ _)m

  • デザインビューにてテーブルが表示されない

    お世話になっております。 どなたか、私の説明で状況を理解していただけるようでしたら是非ご教授ください。 ACCESSのクエリをデザインビューにて編集をしようと思ったのですが、テーブルが表示されません。下の出力項目(?)は出てるし、クエリ自体も問題なく動いています。 もう一度、テーブルの表示でリレーションを繋げればいいのかなと思い、テーブルを追加してみたのですが名前の最後に"1"と付きます。ということはどこかにあるのか?と思ってスクロールして探すのですが見つかりません。 この場合はもう一度クエリを作り直す他、回避、修正方法は無いのでしょうか??