約 1 億 5000 万行の次の MySQL テーブルがあります。
CREATE TABLE `data` (
`datetime` datetime NOT NULL,
`value1` decimal(12,6) NOT NULL,
`value2` decimal(12,6) NOT NULL,
`value3` decimal(12,6) NOT NULL,
`value4` decimal(12,6) NOT NULL,
`value5` decimal(12,6) NOT NULL,
`symbol_id` int(11) NOT NULL,
PRIMARY KEY (`symbol_id`,`datetime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 億 5000 万行は、symbol_id で指定された 9500 シンボルに均等に分割されます。
テーブルで次のクエリを実行しようとしています。
SELECT datetime FROM data WHERE symbol_id = 1234 AND datetime <= "2013-03-01 15:00:00" ORDER BY datetime DESC LIMIT 1
クエリで EXPLAIN を実行すると、以下が返されます。
id: 1
select_type: SIMPLE
table: data
type: range
possible_keys: PRIMARY
key: PRIMARY
key_len: 12
ref: NULL
rows: 23856
Extra: Using where; Using index
クエリの実行には平均で約 300 ミリ秒かかります。これを高速化するには、どのインデックスを追加できますか?
ありがとう!