Takayuki Honda
honda****@gmail*****
2012年 2月 1日 (水) 21:14:51 JST
本多と申します。 首題の件、ご回答頂きまして誠にありがとうございます。 > 今回のケースは3.にあたるかと思います。 > mroongaでは、このうち1.と2.のみを実装していますが、3.と4.は > 未実装です。 上記の件了解致しました。 対応を期待しつつ、現状では実データで試してみて、 応答速度が許容範囲かどうか判断していきたいと思います。 > 須藤です。 > > In <20120****@gmail*****> > "[groonga-dev,00689] 全文検索カラム以外を含んだ検索について" on Tue, 31 Jan 2012 18:26:06 +0900, > Takayuki Honda <honda****@gmail*****> wrote: > > > Fulltext_index対象以外のカラムを含んだ検索をする場合、 > > tritonnですと、2ind index機能を当てにして、 > > 下記のようなクエリを実行していました。 > > > > -------------------------------------------------- > > select > > * > > from > > table force index(idx01) > > where > > match(body) against (“さんぷる”) > > and > > flag = 1 > > --------------------------------------------------- > > > > mroongaですと、force indexを外して下記のようになると思いますが、 > > > > --------------------------------------------------- > > select > > * > > from > > table > > where > > match(body) against (“さんぷる”) > > and > > flag = 1 > > --------------------------------------------------- > > > > この場合の動作は、まず全文検索を実行した後、 > > 検索対象の通常カラムのみを読み込んで、対象行を特定するのか、 > > はたまた逆なのか、どちらになりますでしょうか。 > > 「まず全文検索を実行した後、検索対象の通常カラムのみを読み込 > んで、対象行を特定するのか」になります。 > (MySQLのクエリ実行プランを考えているところも関係するので、 > 全体のレコード数やヒット件数によっては異なるかもしれません。) > > > さて、Tritonnの2ind機能では以下の4種類の問題を解決していまし > た。 > http://qwik.jp/tritonn/userguide.html#0cb0baa8b27d86e9233f601a9cc9cc4f > > 1. limit指定で出力を制限しても応答が遅い問題 > select columns from table where match(a) against(b) limit 1000, 10 > 2. count(*)等で件数を取得するだけでも応答が遅い問題 > select count(*) from table where match(a) against(b); > 3. 全文検索以外の条件で絞り込む処理が遅い問題 > select columns from table where match(a) against(b) and c like 'hoge%'; > 4. 全文検索以外の条件でソートする処理が遅い問題 > select columns from table where match(a) against(b) order by c; > > 今回のケースは3.にあたるかと思います。 > > mroongaでは、このうち1.と2.のみを実装していますが、3.と4.は > 未実装です。 > > 1.に相当する「全文検索時の ORDER BY LIMIT 高速化」: > http://mroonga.github.com/ja/docs/userguide/storage.html#optimisation-for-order-by-limit-in-full-text-search > 2.に相当する「行カウント高速化」: > http://mroonga.github.com/ja/docs/userguide/storage.html#optimisation-for-counting-rows > > > で、3.についてはcond pushという仕組みで実現できそうなのです > が、まだ手を付けられていません。4.についてはまだ検討していま > せん。 > > 未着手な改善案がいくつかあるので、要望等に応じて優先順位をつ > けて開発していきたいと思っています。 -- Takayuki Honda <honda****@gmail*****>