【发布时间】:2016-01-13 16:36:36
【问题描述】:
我正在为一台机器构建一个监控应用程序,必须每秒读取一次位置并存储一个月。我写了一个程序来填充一个初始值为 0 的表格。
CREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`(start_date datetime, end_date datetime)
BEGIN
DECLARE interval_var INT DEFAULT 1;
WHILE end_date >= start_date DO
INSERT INTO table1(datetime, value) VALUES(start_date, 0);
SET start_date = DATE_ADD(start_date, INTERVAL interval_var SECOND);
END WHILE;
END
这个过程很慢,大部分时间和sql数据库的连接都丢失了。例如,当我尝试将表格从“2016-01-14 07:00:00”填充到“2016-01-15 07:00:00”时,程序到达 2016-01-14 07:16:39 和由于失去与数据库的连接而崩溃。
有没有更有效的方法来创建一个月的模板表,其中包含第二个增量和 0 值?我的监控应用程序是在 vb.net 上构建的,我尝试在 vb 上创建代码来创建此模板表,但它比 mysql 工作站上的直接过程更慢且更容易崩溃。
【问题讨论】:
-
您应该能够使用准备好的查询来执行此操作,该查询旨在准备一次并运行多次。尽管您的存储过程也应该可以解决问题。
标签: mysql datetime stored-procedures scada