Mysql SUM和日期之间需要很长时间

时间:2013-06-10 16:31:38

标签: date time-format

我试图用SUM来获取两个日期之间的结果,但是在循环中执行多个查询需要很长时间。以下是我的查询。

数据库表包含超过1.5L的记录,此计数将继续增加。并且还在循环中执行多个查询。

下面是我的查询:

SELECT TIME_FORMAT( SEC_TO_TIME( SUM( TIME_TO_SEC( run_hours ) ) ) , '%H:%i:%s' ) AS total_time
FROM excel_info
WHERE indus_id = 'IN-1086331' AND (date_time BETWEEN '2008-11-27' AND '2013-05-04')

数据库表结构:

CREATE TABLE IF NOT EXISTS `excel_info` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `indus_id` varchar(20) NOT NULL,
   `district` varchar(50) NOT NULL,
   `date_time` date NOT NULL,
   `run_hours` varchar(100) NOT NULL,
   `flag` varchar(100) NOT NULL,
   PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1844417 ;

先谢谢。

1 个答案:

答案 0 :(得分:1)

添加包含您要过滤的列的索引:

CREATE INDEX ix_indus_dt ON `excel_info` (`indus_id`, `date_time`);

此外,在每个匹配的行上调用TIME_TO_SEC将会很昂贵。您可以将run_hours存储为整数。