mysql> show create procedure pro_addusers\g
*************************** 1. row ***************************
procedure: pro_addusers
sql_mode:
create procedure: create definer=`root`@`localhost` procedure `pro_addusers`(userconut int)
begin
set @i = 0;
repeat set @i = @i + 1;
insert into users values (@var:=replace(uuid(),'-',''),left(@var,10),@var,'abcdefghijglmn');
until @i = userconut end repeat;
end1 row in set (0.00 sec)
mysql> show create procedure pro_addusers\g
*************************** 1. row ***************************
procedure: pro_addusers
sql_mode:
create procedure: create definer=`root`@`localhost` procedure `pro_addusers`(userconut int)
begin
set autocommit=0;
set @i = 0;
repeat set @i = @i + 1;
insert into users values (@var:=replace(uuid(),'-',''),left(@var,10),@var,'abcdefghijglmn');
if @i%1000=0 then commit;
end if;
until @i = userconut end repeat;
end1 row in set (0.00 sec)
上面兩個儲存過程,向同乙個innodb表插入同樣的資料量,時間差兩個數量級。
插入10萬條記錄,前者10分鐘,後者1秒鐘。
所以對innodb表批量處理資料的時候,最好不要用自動提交。
批處理 FOR的集與萬用字元上
第二節for 的集合與變數 本節將for的 集合 和 變數 放在一起的原因是,兩者之間存在著相互關係。集合向變數提供元素替換變數,因此是 者,它決定了變數的取值範圍。用術語說,集合賦值給形式變數。變數為集合內的元素提供賦值位置,它只能從集合限定的範圍取值,因此是需求者。集合賦值給變數,變數又向do命...
批處理與DOS命令的區別
批處理可以在dos系統或windows系統上執行,所以批處理的命令比dos的命令要多,基本都是dos命令組成,但多了些流程控制命令如 null,等。另外批處理是可以引用外部程式的,比如乙個regedit就可以開啟登錄檔 在windows系統上,批處理包含非常強大的功能,遠遠多於dos命令 而在dos...
批處理 FOR的集與萬用字元上
第二節for的集合與變數 本節將for的 集合 和 變數 放在一起的原因是,兩者之間存在著相互關係。集合向變數提供元素替換變數,因此是 者,它決定了變數的取值範圍。用術語說,集合賦值給形式變數。變數為集合內的元素提供賦值位置,它只能從集合限定的範圍取值,因此是需求者。集合賦值給變數,變數又向do命令...