MySql には、テーブルaと aへのhistorical_price
2 つn:1
のリレーションシップを持つ大きなテーブルがあります。instrument
timestamp
price
CREATE TABLE `historical_price`
(
`price_nbr` int(11) NOT NULL AUTO_INCREMENT,
`insid` int(11) NOT NULL,
`curr_insid` int(11) NOT NULL,
`timestamp_` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`price` float DEFAULT NULL,
PRIMARY KEY (`price_nbr`),
KEY `insid` (`insid`),
KEY `curr_insid` (`curr_insid`),
KEY `timestamp_` (`timestamp_`),
CONSTRAINT ...
) ENGINE=InnoDB
次のような多くのクエリを実行したい:
SELECT price
FROM historical_price
WHERE insid=566 AND curr_insid=2 AND timestamp_ > '2012-05-01'
LIMIT 0,1
instrument
条件に一致する古いレコードを取得しtimestamp
greater than
ます。
explain
出力は次のとおりです。
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
1 | SIMPLE | historical_price | ref | insid,curr_insid,timestamp_ | insid | 4 | const | 987190 | Using where
新しいマルチカラム インデックス、またはデータベース エンジンを支援するための新しいカラムを追加する前に、どのオプションが最良の結果につながるかについて、意見をお聞きしたいと思います。