【お題】王手、そして

環境:RedHat Linux AS3.0 / PostgresSQL 7.3.6

Publicスキーマにインデックス付きのテーブルを作成し、
複数のスキーマにビューを作成してそのテーブルをそのまま参照したいと思っています。
(スキーマの数が非常に多いので、実体をひとつにし、
 ディスク容量を抑えるのが目的です。)

環境のイメージは以下の通りです。

◆Publicスキーマにテーブル作成-------
create table TEST_TABLE (
id int,
data varchar
);

◆test_tableにインデックスを作成-------
create unique index TEST_KEY on TEST_TABLE (
id
);

◆test_schemaスキーマを作成-------
create schema TEST_SCHEMA;

◆test_schemaスキーマにビューを作成-------
create view TEST_SCHEMA.TEST_VIEW as
select
id,
data
from TEST_TABLE
;


このような環境にて「TEST_VIEW」にSELECTをかけた場合、
「TEST_KEY」は踏襲されるのでしょうか?
ビューに対してインデックスは作成できないようなので、
テーブルに対してはられたインデックスはビューでも生きている
のではないかと考えたのですが、
上記認識で合っているかどうか
ご存知の方がいらっしゃいましたらご教授頂けると助かります。
宜しくお願い申し上げます。

A 回答 (2件)

ビューは仮想的なテーブルで、呼ばれたときに、実際に定義部分に書かれた、SELECT文が実行されます。



したがって、踏襲もなにも・・・
select
id,
data
from TEST_TABLE

が、実行されるんですから、インデックスは活きます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
下にも書いたとおり、実際に試してインデックスが使用されていることを確認しました。

よく考えてみれば、ビューは実際にテーブルにSELECTをかけに行くのだから、インデックスが使用できるのは当たり前ということですね。すこし勘違いしていた部分があったようですが、おかげさまで理解できました。
ありがとうございました。

お礼日時:2005/07/27 12:28

使われると思いますよ。


とりあえず、EXPLAINしてみては?

この回答への補足

環境を作成しEXPLAINをしてみたところ、Index Scan されていました。
上のmasayuki0511さんからのご説明の通り、インデックスはビューからも使用可能なのですね。
zebedeerさん、ありがとうございました。
(恥ずかしながらEXPLAINを初めて使ったので、勉強になりました!)

補足日時:2005/07/27 12:24
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
明日、さっそく試してみてまた返信致します。

お礼日時:2005/07/27 01:24

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

関連するカテゴリからQ&Aを探す


おすすめ情報