Tasuku SUENAGA
a****@razil*****
2007年 3月 2日 (金) 00:32:52 JST
末永です。 > |検索結果が少なそうな場合には、 > |FORCE INDEXを外してあげれば高速になると考えます。 > > 確かにforce indexを外すことで改善されました! よかったよかった。 > |本来は、2indパッチ側で > |・検索件数が少なければ2ind無効 > |・検索件数が多ければ2ind有効 > 多いか少ないかはクエリを発行してみないと分からないので > アプリ側での判断がつかないのが悩ましいところです。 > (先にcount()を取ればいいのでしょうか。。) 2indパッチ内部でcount()は取れるので、 やはり2indパッチ側で頑張るのがよいと思いますね… 現在2indパッチが遅いことへの対策としては、 ・count()のクエリを事前に発行して、その結果によって FORCE INDEXを切り替える ・MyISAMのインデックス(KEY)がメモリに載るように工夫する といったことが考えられます。 インデックスがメモリに載っていれば、 2indパッチが有効の場合の動作で説明した 2.〜4.のループの処理がメモリ上だけで行えるため、 検索結果が少ない場合でのパフォーマンス劣化が減ると考えられます。 ということで、物理メモリを増設して、 MySQLのMyISAM KEY buffer size(記憶があまり定かでないですが)を 大きめに設定すると、実用的な速度が出せるようになるのではないか、 と期待しています。 具体的には、 SELECT num FROM test ORDER BY num; というクエリが高速に実行できるように MySQLのチューニングを行うとよいと思います。 > ともあれ2indパッチの使用にはトレードオフがあることは > 理解できました。ありがとうございます いえいえー。質問どしどし募集しています! > |将来的には、 > |Senna本体で属性情報を持ち、 > |それに基づいた絞込やソート機能を実装することにより > |問題を解決したいと考えております。 > > 気長に期待致しております。 気長かつ迅速に実装できるようにがんばります!!!! Senna本体は高速に結果を返しているのに、 それ以外の要素で律速されている状況は われわれも早く解決できるようになりたいな、と考えています。 --- Tasuku SUENAGA <a****@razil*****>