MySQL使用存储过程upate千万级表

仅仅是个人测试使用,不代表最终生产使用。

** 表结构: **

CREATE TABLE card (
card_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘ID’,
card_number varchar(100) DEFAULT NULL COMMENT ‘卡号’,
card_country varchar(100) DEFAULT NULL,
PRIMARY KEY (card_id)
) ENGINE=MyISAM AUTO_INCREMENT=10000001 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;

update中的存储过程

CREATE DEFINER=root@localhost PROCEDURE updateCountry()
BEGIN
declare i int;
set i = 0;
while i <= 10000000 DO
update tcc.card set card_country=1 where tcc.card.card_id>=i and tcc.card.card_id < i+10000 and card_country is null;
commit;
set i = i+10000;
end while;
END

MySQL使用存储过程upate千万级表
** 在我个人电脑上insert 10000W数据时候,用时在200S. 但update,不到100S,速度极快。**