[groonga-dev,01969] Mroongaで複合主キーを使ったテーブルにおける検索について

Back to archive index

Naoya Murakami visio****@gmail*****
2013年 12月 9日 (月) 08:17:39 JST


お世話になっております。村上です。

Mroongaにおいて、以下のような複数カラムで主キーを作った場合、
この主キーのうち1つで検索すると、検索パフォーマンスが芳しくありません。

CREATE TABLE IF NOT EXISTS `text_multi` (
  `id` varchar(20) NOT NULL,
  `lang` varchar(2) NOT NULL,
  `year` int(10) NOT NULL,
  `text` text NOT NULL,
  PRIMARY KEY (`id`,`lang`,`year`),
  FULLTEXT INDEX `text` (`text`)
) ENGINE=mroonga DEFAULT CHARSET=utf8;
INSERT INTO text_multi VALUES ("200","ja",2009,"今日は雨だ。");

% groonga /var/lib/mysql/mrn_test.mrn "select text_multi"
[[0,1386544345.81022,0.00187849998474121],[[[1],[["_id","UInt32"],["_key","ShortText"],["id","ShortText"],["lang","ShortText"],["text","LongText"],["year","Int32"]],[1,"200","200","ja","今日は雨だ。",2009]]]]

<質問>
Mroongaで複数のカラムで主キーを作った場合は、主キーのカラムは、
インデックスを使って検索できないのでしょうか?

_keyには、idのカラムのみの値が入っているように見えますが、idのみで
検索してもあまりパフォーマンスが良くありません。

別途、KEY `id` (`id`)を作ればはやく検索できそうですが、
そのようにする必要がありますか?

<環境>
・MariaDB10.0.6
・Groonga3.1.0
・Mroonga3.10

以上、よろしくお願いします。



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