No.3ベストアンサー
- 回答日時:
既にみなさんがおっしゃってますように、「ビュー」はそもそも検索速度を向上させるためのものではありません。
また、「ビュー」と「テーブル」は異なるものです。
実データが格納されているものを「テーブル」といい、SELECTステートメントをOracle内にコンパイルしたものが「ビュー」といいます。
もっとかみ砕いて言いますと、「ビュー」はよく使う検索手順を定義したもので日本語では「仮想表」と言います。
つまり、実際は「テーブル」にあるデータを定義された「ビュー」により検索した結果、あたかも「テーブル」のように見えているだけで、「ビュー」に対してデータを追加するわけでもありません。
基本的にデータを追加するのは「テーブル」に対して行います。
抜本的に検索速度を向上させるためには、通常は「インデックス(索引)」を使います。
これについて、詳しくはマニュアル等をご参照ください。
また、ビューを定義することにより、確かに少しだけ検索速度を向上させることも可能です。
既にSELECT分をサーバー内でコンパイルされているため、OracleがSELECT分の解析する必要がなく、ほんの0.1秒に満たないほど速くなります。
しかし、0.1秒速くしたところであまり意味はありませんので、ビューによって検索速度を向上させるという考え方は捨ててください。
また、ビューを定義することとは別問題ですが、SELECT * とせずに、必要なフィールドのみを検索すること、あるいは表を結合したり副問い合わせを使って速度を向上させることも可能です。
これに関してはSELECT文の書き方によって、検索効率を上げる方法ですね。
No.2
- 回答日時:
ビューというのは、要は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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
db2にて数値を3桁文字にて出力...
-
ACCESSのテーブルを毎日定刻に...
-
データを削除しても表領域の使...
-
Viewにインデックスは張れ...
-
oracleのimpdpでORA-39166
-
datapumpの実行方法について
-
ORA-00959: 表領域'****'は...
-
postgreSQLのint型は桁数指定が...
-
DELETE文でFROM句を省略した場合
-
Access レコードを追加できませ...
-
検索結果の列数を動的に変更したい
-
object browser で処理を中断す...
-
Oracle上のテーブルからCREATE ...
-
SQL*Loaderで、データを加工し...
-
統計情報について
-
Oracle10gで他のスキマーのテー...
-
テーブルからのselectにおいて...
-
GROUP BY で列名は指定できない...
-
count(1)とcount(*)の違い
-
viewのバックアップ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量データの取得処理について
-
db2にて数値を3桁文字にて出力...
-
PL/SQLでテーブル名に変数を使...
-
ACCESSエラー「制限されたデー...
-
列の既定値を取得したい
-
ACCESSのテーブルを毎日定刻に...
-
ACCESS2002のupdateの副問合せ...
-
SQLite C/C++ でのテーブル数...
-
Sybaseにてupdate時に特定のInd...
-
SQLServerのテーブル定義書(?...
-
Viewにインデックスは張れ...
-
データを削除しても表領域の使...
-
ORA-00959: 表領域'****'は...
-
異なるスキーマからデータを抽...
-
CLOB型へのINSERT
-
postgreSQLのint型は桁数指定が...
-
Data Pump で大量データインポ...
-
Access レコードを追加できませ...
-
INDEXの無効化
-
DELETE文でFROM句を省略した場合
おすすめ情報