编辑:谢谢大家的评论。我已经尝试了您的大部分建议,但没有帮助。我需要补充一点,我正在使用 Connector/J 5.1.26 通过 Matlab 运行此查询(抱歉之前没有提及)。最后,我认为这是执行时间增加的原因,因为当我“直接”运行查询时需要 0.2 秒。但是,我从未遇到过使用 Connector/J 对性能造成如此巨大的影响。鉴于这些新信息,您有什么建议吗?我很抱歉没有更早地披露这一点,但我再次强调,我从未体验过 Connector/J 对性能的影响。
我在 mySQL 中有下表(CREATE
代码取自 HeidiSQL):
CREATE TABLE `data` (
`PRIMARY` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`ID` VARCHAR(5) NULL DEFAULT NULL,
`DATE` DATE NULL DEFAULT NULL,
`PRICE` DECIMAL(14,4) NULL DEFAULT NULL,
`QUANT` INT(10) NULL DEFAULT NULL,
`TIME` TIME NULL DEFAULT NULL,
INDEX `DATE` (`DATE`),
INDEX `ID` (`SYMBOL`),
INDEX `PRICE` (`PRICE`),
INDEX `QUANT` (`SIZE`),
INDEX `TIME` (`TIME`),
PRIMARY KEY (`PRIMARY`)
)
它填充了大约 360,000 行数据。
以下查询需要 10 多秒才能执行:
Select ID, DATE, PRICE, QUANT, TIME FROM database.data WHERE DATE
>= "2007-01-01" AND DATE <= "2010-12-31" ORDER BY ID, DATE, TIME ASC;
我还有其他包含数百万行的表,其中类似的查询需要几分之一秒。我无法弄清楚是什么导致这个速度如此之慢。有什么想法/提示吗?
解释:
id = 1
select_type = SIMPLE
table = data
type = ALL
possible_keys = DATE
key = (NULL)
key_len = (NULL)
ref = (NULL)
rows = 361161
Extra = Using where; Using filesort