我们有很多复杂的SQL代码,它们在HeidiSQL和MySQL WB中运行时会不断掉落。如果我们使用较少的记录运行相同的代码,则运行良好。 我们认为,如果我们在SP中创建一个循环,在该循环中将代码有效地分成10到20次运行,则它可能会成功完成。我认为这可能涉及创建10到20个表,稍后将它们合并为一个表。
尝试在较小的数据集上运行,运行良好。尝试增加服务器RAM和磁盘空间。尝试以多种不同方式修改代码。
我意识到这可能不是理想的解决方案,但是有人要求这样做。如果有人可以帮助我编写代码,我将不胜感激。
下面是我构建的代码,但是不起作用...
Stripe
20张桌子
答案 0 :(得分:0)
这是有关如何准备和执行语句的简化示例
DROP PROCEDURE IF EXISTS p;
delimiter $$
CREATE PROCEDURE p()
BEGIN
DECLARE x INT;
SET x = 100;
WHILE x <= 300 DO
set @sql= (select concat('DROP TABLE if EXISTS table',x));
select @sql;
prepare sqlstmt from @sql;
execute sqlstmt;
deallocate prepare sqlstmt;
set @sql = (select concat('CREATE TABLE table',x,' AS
SELECT t1.*
FROM users t1;'));
select @sql;
prepare sqlstmt from @sql;
execute sqlstmt;
deallocate prepare sqlstmt;
SET x=x+100;
END WHILE;
END$$
DELIMITER ;
CALL p();