読者です 読者をやめる 読者になる 読者になる

mroongaのラッパーモードでORDER BY LIMITが高速化動作してないみたい

mroonga

表題のとおりでございます。ストレージモードで作った全く同じテーブル&SQLでは動作しているんですが・・・何でー。ちなみにMyISAMのラッパー。

高速化が動作する条件が公式ドキュメントから引用させていただきますと以下4点。

  • where句がmatch...againstのみ
  • joinしていない
  • limitの指定がある
  • order byの指定がカラム(_id含む)またはwhere句に指定したmatch...againstである

使用しているSQLはこんな感じ。ストレージモードでは動作してるのだし、特に変なところはないと思うんですが・・・。

SELECT Id FROM table WHERE MATCH(Content) AGAINST("東京") ORDER BY DateTime DESC LIMIT 100;

高速化が動作すればmroonga_fast_order_limitのカウントが上がるのだけど、上がらない。そしてソートするのにDateTimeのインデックスが使用されてないのでとても遅い・・・。
何かがマズいんだろうけど今のところ原因が分からないっす。


あとラッパーモードならLOAD INDEX INTO CACHE構文が使えるのかと思ったら、
MYSQLのテーブル上はストレージエンジンがmroongaと見なされているので使えないようだ。