kousa****@nttda*****
kousa****@nttda*****
2008年 1月 16日 (水) 13:46:34 JST
幸坂です。こんにちは。 >> SELECT * FROM tab WHERE title @@ 'A' AND NOT(data @@ 'XXX'); このクエリの場合、title列をインデックススキャンした後、 data列でフィルタ(シーケンシャルスキャン)するプランになるかと思います。 一度インデックススキャンしているので、あまり遅くないと思いますが いかがでしょうか? どうしてもseq scanを避けたい場合、以下のクエリでどうでしょう? SELECT id FROM tab WHERE title @@ 'A' EXCEPT SELECT id FROM tab WHERE data @@ 'XXX'; EXCEPTで行の比較をしているため、逆に遅くなる可能性があります・・・。 もしくは、以下のように副問い合わせを用いた方法もあります。 SELECT * FROM tab WHERE title @@ 'A' AND id NOT IN (SELECT id FROM tab WHERE data @@ 'XXX'); いろいろ試してみてください。 > -----Original Message----- > From: ludia****@lists***** > [mailto:ludia****@lists*****] On Behalf Of ssenou > Sent: Thursday, January 10, 2008 3:00 PM > To: ludia****@lists***** > Subject: [Ludia-users 174] Re: NOT検索について > > 瀬能です。 > 回答ありがとうございます。 > > NOT(data @@ 'XXX')で > 期待して検索結果は得られたのですが、 > どうもSeq Scanになってしまうようです。 > > ludiaのINDEXを使う形でSQLを組むとすると > 何かいい方法はありますか? > > 以上よろしくお願いします。 > > ----- Original Message ----- > From: <kousa****@nttda*****> > To: <ludia****@lists*****> > Sent: Thursday, January 10, 2008 1:59 PM > Subject: [Ludia-users 173] Re: NOT検索について > > > > 幸坂です。こんにちは。 > > > > SELECT * FROM tab WHERE title @@ 'A' AND NOT(data @@ 'XXX'); > > でいかがでしょうか? > > > >> 最初「-」を利用して検索すれば出来ると思い、 > >> data @@ '-XXX'を実行してみると逆にdataが「XXX」の物がヒットしてしまった の > > で… > > +や-を最初に持ってくることはできません。 > > 指定しても無視されます。 > > > >> -----Original Message----- > >> From: ludia****@lists***** > >> [mailto:ludia****@lists*****] On > Behalf Of ssenou > >> Sent: Wednesday, January 09, 2008 5:11 PM > >> To: ludia****@lists***** > >> Subject: [Ludia-users 172] NOT検索について > >> > >> 瀬能です。 > >> お世話になります。 > >> > >> ■環境 > >> Redhat Enterprise Linux 4 U5 > >> ludia 1.4.0 (mecab-0.96 ipadic-2.7.0 senna-1.0.9 > >> postgresql 8.2.4 > >> > >> ■DB > >> table : id int4(主キー),title varchar,data text > >> index : fulltextb(data) > >> > >> ■データ > >> id=1 title=A data=XYZ > >> id=2 title=A data=XXX > >> id=2 title=B data=XXX > >> > >> ■現象 > >> > >> titleが「A」且つ dataが「XXX」 > >> では無いレコードを検索したいという場合は > >> どういった方法がありますでしょうか? > >> > >> 最初「-」を利用して検索すれば出来ると思い、 > >> data @@ '-XXX'を実行してみると逆にdataが「XXX」の物がヒットしてしまった の > > で… > >> > >> > >> 以上、よろしくお願いします。 > >> > >> _______________________________________________ > >> 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 > > > > > > _______________________________________________ > Ludia-users mailing list > Ludia****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/ludia-users >