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文をネストさせると、レスポンスが向上する場合もあります。
No.3ベストアンサー
- 回答日時:
既にみなさんがおっしゃってますように、「ビュー」はそもそも検索速度を向上させるためのものではありません。
また、「ビュー」と「テーブル」は異なるものです。
実データが格納されているものを「テーブル」といい、SELECTステートメントをOracle内にコンパイルしたものが「ビュー」といいます。
もっとかみ砕いて言いますと、「ビュー」はよく使う検索手順を定義したもので日本語では「仮想表」と言います。
つまり、実際は「テーブル」にあるデータを定義された「ビュー」により検索した結果、あたかも「テーブル」のように見えているだけで、「ビュー」に対してデータを追加するわけでもありません。
基本的にデータを追加するのは「テーブル」に対して行います。
抜本的に検索速度を向上させるためには、通常は「インデックス(索引)」を使います。
これについて、詳しくはマニュアル等をご参照ください。
また、ビューを定義することにより、確かに少しだけ検索速度を向上させることも可能です。
既にSELECT分をサーバー内でコンパイルされているため、OracleがSELECT分の解析する必要がなく、ほんの0.1秒に満たないほど速くなります。
しかし、0.1秒速くしたところであまり意味はありませんので、ビューによって検索速度を向上させるという考え方は捨ててください。
また、ビューを定義することとは別問題ですが、SELECT * とせずに、必要なフィールドのみを検索すること、あるいは表を結合したり副問い合わせを使って速度を向上させることも可能です。
これに関してはSELECT文の書き方によって、検索効率を上げる方法ですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- Oracle SQL update方法 2 2022/06/22 14:07
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLServerのテーブル定義書(?...
-
大量データの取得処理について
-
データを削除しても表領域の使...
-
異なるスキーマからデータを抽...
-
特定のスキーマのテーブルを一...
-
Viewにインデックスは張れ...
-
DELETE文でFROM句を省略した場合
-
Access レコードを追加できませ...
-
CLOB型へのINSERT
-
ACCESS 複数テーブル・複数フィ...
-
csvをSQLiteに取り込むと文字化...
-
テーブルからのselectにおいて...
-
count(1)とcount(*)の違い
-
select insert 句
-
ORA-00959: 表領域'****'は...
-
Data Pump で大量データインポ...
-
検索結果の列数を動的に変更したい
-
C#でaccdbファイルのテーブルの...
-
datapumpの実行方法について
-
主キー以外の項目にNotNull制約...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量データの取得処理について
-
列の既定値を取得したい
-
SQLServerのテーブル定義書(?...
-
ACCESS2002のupdateの副問合せ...
-
db2にて数値を3桁文字にて出力...
-
PL/SQLでテーブル名に変数を使...
-
ACCESSのテーブルを毎日定刻に...
-
SQLite C/C++ でのテーブル数...
-
ACCESSエラー「制限されたデー...
-
登録する方法
-
Sybaseにてupdate時に特定のInd...
-
PostgreSQL:ラジオボタンを用い...
-
Viewにインデックスは張れ...
-
データを削除しても表領域の使...
-
異なるスキーマからデータを抽...
-
CLOB型へのINSERT
-
Data Pump で大量データインポ...
-
ACCESS 複数テーブル・複数フィ...
-
postgreSQLのint型は桁数指定が...
-
SQLでスキーマ名(所有者名)の...
おすすめ情報