[groonga-dev,00618] Re: LIMIT使用時の異常について

Back to archive index

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/




groonga-dev メーリングリストの案内
Back to archive index