ssenou
sseno****@techn*****
2007年 12月 13日 (木) 11:53:04 JST
回答ありがとうございます。 > レコードが1行しかないため、シーケンシャルスキャンのほうが > 高速と判断されています。 データを10万行でも試してみたのですが、 1行も10万行も実行計画に変化が無いので サンプルを1行として質問していました。 > ・postgresql.conf にenable_seqscan = off と記述する。 この設定をして明示的にERRORが発生するようにしています。 ludia1.3系や従来のコスト計算モードでも試したのですが、 結果は同じでした。 以上よろしくお願いします。 ----- Original Message ----- From: <kousa****@nttda*****> To: <ludia****@lists*****> Sent: Thursday, December 13, 2007 11:40 AM Subject: [Ludia-users 143] Re: 複数のテーブルに対する全文検索について > 幸坂です。こんにちは。 > > レコードが1行しかないため、シーケンシャルスキャンのほうが > 高速と判断されています。 > > ・レコード数を増やす。 > ・postgresql.conf にenable_seqscan = off と記述する。 > > などの方法を用いれば、インデックススキャンが利用されるはずです。 > >> -----Original Message----- >> From: ludia****@lists***** >> [mailto:ludia****@lists*****] On Behalf Of ssenou >> Sent: Thursday, December 13, 2007 11:27 AM >> To: ludia****@lists***** >> Subject: [Ludia-users 142]複数のテーブルに対する全文検索について >> >> 瀬能です。 >> お世話になっています。 >> >> 質問があるのですが、 >> 複数のテーブル(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)" >> >> とシーケンシャルスキャンになってしまいます。 >> >> _______________________________________________ >> Ludia-users mailing list >> Ludia****@lists***** >> http://lists.sourceforge.jp/mailman/listinfo/ludia-users >> > > _______________________________________________ > Ludia-users mailing list > Ludia****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/ludia-users > >