【发布时间】:2010-11-10 15:20:03
【问题描述】:
我在 MySQL 存储过程中有一个循环,我几乎为每次迭代插入记录。众所周知的问题是逐行插入效率低下,我宁愿看到带有多个值列表的插入。
当前程序的伪示例:
CREATE PROCEDURE p_foo_bar()
BEGIN
DECLARE foo VARCHAR(255);
DECLARE my_cursor CURSOR FOR SELECT foo FROM bar;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1;
cursor_loop:
LOOP
FETCH my_cursor INTO foo;
IF not_found THEN
CLOSE my_cursor;
LEAVE
END IF;
IF foo is something ... THEN
INSERT INTO foobar (foo_colum) VALUES (foo);
-- Anyone knows if it is possible to do bulk insert here:
-- For example:
-- INSERT INTO foobar (foo_column) VALUES (foo), ..., (foo123);
END IF;
END LOOP cursor_loop;
END
我宁愿看到 INSERT 查询来增加它的值列表一段时间,然后定期批量插入,但如果不煮一大碗意大利面,就看不到方法。
【问题讨论】:
标签: mysql stored-procedures loops