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
以上、よろしくお願いします。