[pgsql-jp: 32232] 継承したテーブルでインデックスが効かない

sio-ml sio-ml @ inter7.jp
2004年 2月 9日 (月) 21:13:07 JST


塩田です。

下記のような実験をしてみたのですが、
テーブルを継承させた場合にINDEXが効いてないようなのですが
子テーブルを作成した場合にはINDEX SCANはされないのでしょうか?
psql (PostgreSQL) 7.3.2で実験しました。


1.簡単なテーブルを作ります
    create table hoge(num serial primary key,moji varchar);
    create index hoge_moji_idx on hoge(moji);

2.そしてデータを挿入します。
    insert into hoge(moji) values('ほげほげ');
    insert into hoge(moji) values('ぱよぱよ');

3.SELECTしてみるとINDEX SCANになっている
    explain analyze select moji from hoge where num=2;
                                                  QUERY PLAN                    
    ---------------------------------------------------------------------------------------------------------------
     Index Scan using hoge_pkey on hoge  (cost=0.00..4.82 rows=1 width=32) (actual time=0.03..0.03 rows=1 loops=1)
       Index Cond: (num = 2)
     Total runtime: 0.09 msec
    (3 rows)


4.上記1.で作成したテーブルを継承した子テーブルを作成
    create table ko_hoge () inherits( hoge );
    insert into ko_hoge(moji) values('ぴよぴよ');
    insert into ko_hoge(moji) values('ぺもぺも');

5.SELECTしてみるとSEQ SCANになってしまう。
    explain analyze select moji from ko_hoge where num=3;
                                           QUERY PLAN                           
    -------------------------------------------------------------------------------------------------
     Seq Scan on ko_hoge  (cost=0.00..22.50 rows=5 width=32) (actual time=0.06..0.07 rows=1 loops=1)
       Filter: (num = 3)
     Total runtime: 0.12 msec
    (3 rows)

6.さらに、4.で作成したテーブルにINDEXを作成する
    create index ko_hoge_moji_idx on ko_hoge(moji);
    念のためVACUUM
    vacuum analyze;


7.SELECTしてみると、やはりSEQ SCANになってしまう。
    explain analyze select moji from ko_hoge where num=3;
                                               QUERY PLAN                           
    ------------------------------------------------------------------------------------------------
     Seq Scan on ko_hoge  (cost=0.00..1.02 rows=1 width=12) (actual time=0.03..0.03 rows=1 loops=1)
       Filter: (num = 3)
     Total runtime: 0.09 msec
    (3 rows)


--
しお




pgsql-jp メーリングリストの案内