对于结构为的任何给定日志记录表:
CREATE TABLE `example` (
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`quantity` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
`price` varchar(15) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
在每分钟插入条目的地方,我知道在没有索引的情况下离开这个表会更有效。但是,当我尝试将类似的表与SELECT
以下查询的平均速度约为 3.7 秒
SELECT * FROM (
SELECT `t1`.`time`,
`t1`.`quantity` AS `q1`,
`t1`.`price` AS `p1`,
`t2`.`quantity` AS `q2`,
`t2`.`price` AS `p2`
FROM `example 1` AS `t1`,
`example 2` AS `t2`
WHERE `t1`.`time` = `t2`.`time`
ORDER BY `time` DESC LIMIT 72
) AS dt ORDER BY time ASC;
有什么方法可以大大减少此查询所花费的时间吗?类似的查询,
SELECT * FROM (
SELECT *
FROM `example`
ORDER BY `time` DESC LIMIT 72
) AS dt ORDER BY time ASC;
只需要~0.008s。有了这个,我认为简单地执行两个单独的查询然后使用 PHP 比较它们会更有效但更丑陋。