[pgsql-jp: 27134] インデックスについて
多田 知之
tom @ tyo.co.jp
2002年 8月 23日 (金) 21:04:21 JST
多田といいます
聞くは一時の恥ということで、すいません。
インデックスについての2点ほど質問したいことがあります。
石井さん著の「PostgreSQL完全攻略ガイド 改訂第三版」
3.8.6 インデックスと関数インデックス(P191)
を一応一通り読みました。インデックス=索引 と理解しています。
そこで、次のようなテーブル(userdata)があったとします。
Attribute | Type |
----------------+--------------------------+
id | integer |
name | text |
mail | text |
birth | date |
Indices: userdata_pkey
このうち、idはシリアル型として定義したので、自動的にインデックスが作成さ
れています
create unique index userdata_pkey on userdata (id);
[質問1]
さて、質問なのですが、この場合インデックスの恩恵にあずかるのは
select * from userdata where id=34;
のようにインデックスとして登録したidを対象に検索した場合であり、
select * from userdata where mail='tom @ tyo.co.jp';
のように、インデックスとして登録していないmailフィールドを検索対象とした
場合は意味がないということでよろしいでしょうか?
[質問2]
質問1での私の推測が当たっていると仮定して・・・
select * from userdata where mail='tom @ tyo.co.jp' and name='多田'
のような検索を行う場合、有効なインデックスとは
create index userdata_mail_name on userdata(mail,name)
のように2フィールドをまとめたインデックスの方がよいのでしょうか?
それとも・・・
create index userdata_mail on userdata(mail)
create index userdata_name on userdata(name)
のようにフィールドごとにインデックスを作成した方がよいのでしょうか?
すいませんが、よろしくお願いいたします。
多田知之
─────────────
E-mail:tom @ tyo.co.jp
pgsql-jp メーリングリストの案内