1
在MySQL有一个大表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
用于获取与该 greater than
条件匹配的那个instrument
上的较早记录。
的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
然后加入新的多列索引,或者帮助数据库引擎的新列,我想问问你的意见关于哪个选项可能导致最佳结果,如果有的话。
哇!我期待着事情变得更加复杂......现在它工作的很好 – perissf