MariaDB 用户过程无限循环

MariaDB User procedure loops endlessly

我有以下存储过程来计算 运行 平均值。但是,当被调用时,它会永远运行。

delimiter //
CREATE PROCEDURE run_avg(date_start DATE,date_end DATE,pol_id  TINYINT,sta_id TINYINT)
NOT DETERMINISTIC
CONTAINS SQL

BEGIN

TRUNCATE average_table;

WHILE date_start <= date_end DO

INSERT INTO average_table(value_avg)
SELECT AVG(a.value) as val
FROM (SELECT value FROM obs_all_unik
    WHERE start_time >=date_start
      AND start_time < date_start + INTERVAL 8  HOUR
      AND polutant_id=pol_id
      AND station_id=sta_id) AS a;

SET date_start = date_start + INTERVAL 1 HOUR;
END WHILE;

END;//

delimiter ;

有什么想法吗?

INDEX(station_id, polution_id, start_date)

将有助于提高性能。

只将平均值插入 table 而不同时插入这些值似乎是错误的:station_id, polution_id, start_date.

无限循环是由于错误地将 date_start 定义为 DATE。因为我试图按小时递增,所以它返回了一个相同的值。我将其更改为 TIMESTAMP,现在问题消失了。