ssenou
sseno****@techn*****
2007年 12月 13日 (木) 11:26:56 JST
瀬能です。 お世話になっています。 質問があるのですが、 複数のテーブル(text型カラム)に対する複数の@@検索を実行すると 必ずシーケンシャルスキャンになってしまうのですが、 複数のテーブル(text型カラム)に対する複数の@@検索は想定していない仕様ですか? (SQL文で対応出来ない事もないですが、できるだけ自由な記述をしたいと思っているので…) また、回避方法などあれば教えてください。 以上よろしくお願いします。 ■環境 Redhat Enterprise Linux 4 U5 ludia 1.4.0 (mecab-0.96 ipadic-2.7.0 senna-1.0.9 postgresql 8.2.4 ■設定 postgres.conf ・ludia.max_n_sort_result = 100000 ・ludia.enable_seqscan = off ・ludia_sen_index_flags = 31 ・ludia.max_n_index_cache = 16 ・ludia.initial_n_segments = 2048 ・ludia.usegenericcost = on or off共に ■DB ・table1(構成) : id(key) int4,data text ・table2(構成) : id(key) int4,data text ・table1(DATA) : id = 1,data = "TEST" ・table2(DATA) : id = 1,data = "TEST" ・table1(INDEX) : fulltextb ・table2(INDEX) : fulltextb ■現象 SELECT * FROM test1,test2 WHERE table1.data @@ 'TEST' or table2.data @@ 'TEST' と実行すると "Nested Loop (cost=0.00..2.04 rows=1 width=24)" " Join Filter: ((table1.data @@ 'TEST'::text) OR (table2.data @@ 'TEST'::text))" " -> Seq Scan on table1 (cost=0.00..1.01 rows=1 width=12)" " -> Seq Scan on table2 (cost=0.00..1.01 rows=1 width=12)" とシーケンシャルスキャンになってしまいます。