0.背景
mysql8.0+navicat
1.过程
依次执行下面3条sql语句。
CREATE TABLE test
(
id
int(7) NOT NULL AUTO_INCREMENT COMMENT ‘自增id’,
name
varchar(50) NOT NULL COMMENT ‘名称’,
pwd
varchar(50) NOT NULL COMMENT ‘密码’,
create_time
datetime NULL DEFAULT CURRENT_TIMESTAMP,
update_time
datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id
)
) AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COMMENT=‘测试表’;
DELIMITER
−
−
写
函
数
之
前
必
须
要
写
C
R
E
A
T
E
F
U
N
C
T
I
O
N
t
e
s
t
d
a
t
a
(
)
R
E
T
U
R
N
S
I
N
T
D
E
T
E
R
M
I
N
I
S
T
I
C
B
E
G
I
N
D
E
C
L
A
R
E
n
u
m
I
N
T
D
E
F
A
U
L
T
1000000
;
D
E
C
L
A
R
E
i
I
N
T
D
E
F
A
U
L
T
0
;
W
H
I
L
E
i
<
n
u
m
D
O
I
N
S
E
R
T
I
N
T
O
‘
t
e
s
t
‘
(
‘
n
a
m
e
‘
,
‘
p
w
d
‘
)
V
A
L
U
E
S
(
C
O
N
C
A
T
(
′
用
户
′
,
i
)
,
U
U
I
D
(
)
)
;
S
E
T
i
=
i
+
1
;
E
N
D
W
H
I
L
E
;
R
E
T
U
R
N
i
;
E
N
D
-- 写函数之前必须要写 CREATE FUNCTION test_data() RETURNS INT DETERMINISTIC BEGIN DECLARE num INT DEFAULT 1000000; DECLARE i INT DEFAULT 0; WHILE i<num DO INSERT INTO `test`(`name`,`pwd`)VALUES(CONCAT('用户',i),UUID()); SET i=i+1; END WHILE; RETURN i; END
−−写函数之前必须要写CREATEFUNCTIONtestdata()RETURNSINTDETERMINISTICBEGINDECLAREnumINTDEFAULT1000000;DECLAREiINTDEFAULT0;WHILEi<numDOINSERTINTO‘test‘(‘name‘,‘pwd‘)VALUES(CONCAT(′用户′,i),UUID());SETi=i+1;ENDWHILE;RETURNi;END
select test_data(); – 执行函数
执行时间大概是 224.350s