我想創建程序使用limit
選項要麼insert into
.. with select
..或create table as select
.....通在SQL stament運行的程序在mysql中
我想用limit
只插入500K記錄一次,所以我正在使用while循環我設置count3這次,因爲我試圖插入1.5mil記錄。
call proc1(with long sql statement......................)
DELIMITER //
CREATE PROCEDURE proc1(IN sqllines text)
BEGIN
DECLARE valFrom INT;
DECLARE valTo INT;
DECLARE count INt default 0;
SET @sqlin = sqllines;
SET valFrom = 0;
SET valTo = 500000;
SET @sql = ('@sqlin LIMIT valFrom , valTo');
WHILE count < 3
DO
PREPARE stmt from @sql;
EXECUTE stmt;
SET valFrom = valFrom+500000;
SET valTo = valTo+500000;
set count = count + 1;
END WHILE;
END;
//
DELIMITER ;
你試圖通過將它分割成3個迭代插入來達到什麼目的?它與服務器執行相同的工作(甚至更多)工作。而且,你的問題在哪裏? – Najzero 2013-03-07 08:23:22
我希望我所有的創建表與選擇從...並插入表中選擇從......想要使用動態分割程序或功能與限制選項和500K行的時間限制,以避免死鎖情況,這是造成我的應用程序用戶很麻煩。 – 2013-03-08 02:19:08
我不能要求用戶每次運行時手動添加限制,因爲其中一些查詢是大型程序的一部分。 – 2013-03-08 02:20:17