我正在使用 MySQL 数据库,我必须使用指定的步骤(例如一天)生成指定时间段(由开始和停止日期指定)的日期间隔。
我编写了一个存储过程来生成间隔,创建一个临时表并用间隔填充这个表。
DELIMITER $$
CREATE PROCEDURE showu(IN start date, IN stop date)
BEGIN
CREATE TEMPORARY TABLE intervals(single_day DATE);
next_date: LOOP
IF start>stop THEN
LEAVE next_date;
END IF;
INSERT INTO intervals(single_day) VALUES(start);
SET start = DATE_ADD(start, INTERVAL 1 DAY);
END LOOP next_date;
END$$
DELIMITER ;
我想在连接查询中使用这个临时表。但是我遇到了一个问题。当我调用过程调用showu('2008-01-09', '2010-02-09');
时,它执行大约 30 秒。为什么它执行这么长时间的问题?有没有可能改进它?如果这个解决方案是错误的,我该如何以不同的方式解决我的问题?