我有一组记录,每个记录都有一个DateTime
字段。每条记录的时间都高于或等于之前的记录。
我需要一个快速查询,它会找到时间最接近提供的时间项的记录。
做我想做的事情的方法是使用以下队列:
select * from `mytable` order by abs(`time`-@mytime) asc limit 0,1;
但这需要相当长的时间才能运行。
有没有更好的方法来编写此查询?
更新 这是表格的创建声明:
CREATE TABLE IF NOT EXISTS `mydatabase`.`mytable` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`itemid` INTEGER UNSIGNED NOT NULL,
`time` DATETIME NOT NULL,
`closeTime` DATETIME,
`direction` TINYINT UNSIGNED NOT NULL,
`price` DECIMAL(65,30) NOT NULL,
`volume` DECIMAL(65,30) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE = InnoDB;