mysql - MariaDB 用户过程无限循环

标签 mysql stored-procedures mariadb

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

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/

相关文章:

php - SQL语法只有两种类型的引号问题?

mysql - mysql中左连接的sql查询表1和表2中的主键不相同

python - 使用 Flask-SQLAlchemy 中的存储过程调用将 POST 方法发送到 SQL

mysql - 带有外键的 MariaDB INNER JOIN 比没有外键慢得多

mysql - InnoDB 在外键上使用 where 子句时锁定不同的索引

mysql - java.lang.NullPointerException : Cannot invoke "com.proj.my.repository.OrderRepository.save(Object)" because "this.orderRepository" is null

mysql - 防止 super 管理员/dba 对表进行删除/更新?

mysql - 保护存储过程

azure - DocumentDB存储过程: what does the EnableScriptLogging option do?

MySQL 多重左连接限制