我們有以下MySQL表有大約150萬行:添加索引,優化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.5億行平分9500個符號之間,通過symbol_id指定。
我想這個表上運行以下查詢:
SELECT datetime FROM data WHERE symbol_id = 1234 AND datetime <= "2013-03-01 15:00:00" ORDER BY datetime DESC LIMIT 1
運行的查詢返回的講解:
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毫秒。我可以添加哪些索引以加快速度?
謝謝!
300毫秒,通過3.5億行是非常好的。也許你需要考慮升級你的硬件來滿足你的性能規格。 – 2013-03-02 22:31:06
也在'value'字段使用'INDEX'? – hjpotter92 2013-03-02 22:32:01
它實際上是150百萬行,但事情是查詢對某些符號運行速度非常快,但不是全部。 – user1094786 2013-03-02 22:39:49