最新tritonnで

SELECT MATCH(col1, col2, col3) AGAINST('W.... query' IN BOOLEAN MODE) AS score Where MATCH(col1, col2, col3) AGAINST('W.... query' IN BOOLEAN MODE) ORDER BY score DESC;

が異常に遅いのはなんでなんでしょう。vmstatみてるとこのクエリが発生すると、10回に1回くらいすげぇ量のI/O (特にINのほう)が発生してるんですが・・・

一回このクエリが実行し終わって、再度同じクエリを投げるとそうとう速くなるのだけど、これはクエリキャッシュっぽい。SQL_NO_CACHEすると同じ事が起きる。いったいどこの何をつかってソートしてるんだ??

追記:間違い。SQL_NO_CACHEしてても、2回目はそれなりに速い。
追記2: ちゃんとLIMIT も使ってる。



追記。結局何を直しても最終的にFilesortになってしまうのが問題だと結論にいたったので、それならORDER BYをやめることにした。Tritonnはどんな理由か知らんがデフォルトでスコア順にソートしてくれないので、442行目あたりに勘だけをたよりに  sen_records_sort()を突っ込んでsennaレベルで先にソートすることに。んで、後はソート無し。グッド。