0
我有一個表稱爲maptable
看起來像這樣:MySQL的存儲過程循環超時
occ_id name position
0124 Mark Jones 2
Hanna Smith 3
Frank Williams 4
0238 Henry Bassett 5
我想「填補」了occ_id列中失蹤(意思是,漢娜·史密斯和弗蘭克·威廉姆斯也應該有occ_id 0124)。
我想出了下面的過程,它做的工作,但與〜6000分的記錄,它超時每當我運行它:
CREATE DEFINER=`root`@`localhost` PROCEDURE `mapjoinid_1`()
MODIFIES SQL DATA
BEGIN
DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
SELECT COUNT(*) FROM maptable WHERE occ_id = '' INTO n;
SET i=0;
WHILE i < n DO
UPDATE maptable m JOIN maptable mt ON (m.position - 1) = mt.position SET m.occ_id = mt.occ_id;
SET i = i + 1;
END WHILE;
End
是否有LOOP更有效的方法,或重複update
聲明哪裏處理不需要很長時間?
我拼湊了來自不同來源的代碼。你能給我一個你正在談論的代碼的例子嗎?我遵循你提供的鏈接,但它也使用連接。 –