Kouhei Sutou
kou****@clear*****
2011年 11月 11日 (金) 16:18:44 JST
須藤です。 In <20111****@clear*****> "[groonga-dev,00603] Re: LIMIT使用時の異常について" on Wed, 09 Nov 2011 10:26:21 +0900 (JST), Kouhei Sutou <kou****@clear*****> wrote: >> mysql> SELECT * FROM test_table WHERE MATCH(word) AGAINST ('あ') ORDER >> BY year LIMIT 0,10; >> +----+-----------------+------+ >> | id | word | year | >> +----+-----------------+------+ >> | 7 | あお | 1966 | >> | 7 | あお | 1966 | ← id 7が重複 >> | 6 | あいうえお | 1976 | ←id 5が除外 >> | 1 | あ | 1980 | >> | 2 | あい | 1981 | >> | 3 | あいう | 1982 | >> +----+-----------------+------+ >> 6 rows in set (0.01 sec) > > こちらでも再現しました!調べてみますね。 > 再現手順が揃っていてとても助かります。 groongaとmroonga両方の問題でした! どちらのリポジトリも修正済みです。 >> また、関連があるかわかりませんが >> SQL_CALC_FOUND_ROWSを使った際も結果値が期待値と異なります。 >> >> 正常) >> mysql> SELECT SQL_CALC_FOUND_ROWS * FROM test_table WHERE MATCH(word) >> AGAINST ('あ') ORDER BY year; >> 〜中略〜 >> mysql> SELECT FOUND_ROWS(); >> →6 >> >> 異常) >> mysql> SELECT SQL_CALC_FOUND_ROWS * FROM test_table WHERE MATCH(word) >> AGAINST ('あ') ORDER BY year LIMIT 5; >> 〜中略〜 >> mysql> SELECT FOUND_ROWS(); >> →5 > > これは、最適化の影響がしますね。。。 最適化の影響でした。 SQL_CALC_FOUND_ROWSが指定されたら最適化をしないようにして修 正しました! こちらもリポジトリに入っています! 再現手順があって調べるのにとても助かりました。 ありがとうございます! -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) プログラミングが好きなソフトウェア開発者を募集中: http://www.clear-code.com/recruitment/