私は3列の価格データの約400万行(7ギガバイトのデータ+ 9ギガバイトインデックス)とMySQLのMyISAMテーブルがあります〜(私はカーディナリティが言葉だと思います)timeseries MySQLテーブルの複数列インデックスまたは複数インデックス?
CREATE TABLE `prices` (
`ts` datetime NOT NULL,
`id` int(10) unsigned NOT NULL,
`price` double NOT NULL,
PRIMARY KEY (`ts`,`instrid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1$$
明確なid
秒の数をされてこれらの時間範囲内のほとんどの時間範囲では、カーディナリティがid
は〜20より小さい(したがって、3月1日と2日の間に20以上の異なるIDがあります)。
クエリがほぼ独占的に、フォームのとおりです。
select ts, price from prices where ts between {t1} and {t2} and id = {id}.
それは物事をスピードアップする必要があり、いくつかの指標(S)のように思えます。
ts
とid
のインデックスを組み合わせるか、またはts
とid
のインデックスを組み合わせる方がよいでしょうか?いくつかの第3の代替?私は自分自身でこの質問に答える方法を学ぶことができる場所へのアドバイスを感謝します。
別のテーブルタイプ(InnoDB?)が自分の目的に適していますか?
が合意良いの比較があります。 '(ts、id、price)'の順で列をカバーするインデックスを作成します。 –
興味深い解決策です。私はこれを試して、その記事を見てみましょう。ありがとう:) –
このインデックスがメモリに収まらない場合は、問題になるかどうか分かりますか? –