sql
1DROP PROCEDURE IF EXISTS p1; 2 3CREATE PROCEDURE p1() 4BEGIN 5 DECLARE done INT DEFAULT 0; 6 DECLARE item_id INT; 7 DECLARE cur CURSOR FOR SELECT item_id FROM table1 WHERE category=1; 8 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 9 OPEN cur; 10 11 WHILE done = 0 DO 12 FETCH cur INTO inviteCode; 13 14 # table2に挿入する 15 INSERT INTO table2 (SELECT * FROM table1 WHERE table1.item_id = item_id); 16 # table1から消す 17 DELETE FROM table1 WHERE table1.item_id = item_id; 18 19 END WHILE; 20 21 CLOSE cur; 22END; 23 24CALL p1();
このようなプロシージャでcategory=1
のデータをtable1
からtable2
に移動させています。
データが1,000行/秒ほどで移動されているのですが、移動対象のデータが5,000万行あります。
できるだけ早くテーブルの移動を行いたいのですがどこを改善すればよろしいでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。