我有以下存储过程来计算运行平均值。然而,当被调用时,它会永远运行。
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)
有助于提高性能。
仅将平均值插入表中而不插入这些值似乎是错误的:station_id、polution_id、start_date
。
关于mysql - MariaDB 用户过程无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29767719/