私はMySQLデータベースを使用しており、指定された期間(開始日と停止日で指定)の日付間隔を指定されたステップ(たとえば1日)で生成する必要があります。
間隔を生成し、一時テーブルを作成し、このテーブルに間隔を設定するストアド プロシージャを作成しました。
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 秒実行されます。なぜそんなに長く実行されているのかという質問は? それを改善することは可能ですか?この解決策が間違っている場合、別の方法で問題を解決するにはどうすればよいですか?