MySQL存储过程——Baidu Comate智能代码助手添加20条DML语句——测试索引效果
DDL
CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, createDate DATE NOT NULL, userName VARCHAR(255) NOT NULL, phone VARCHAR(20), age INT, sex ENUM('M','F','O') NOT NULL, introduce TEXT );
存储过程
DELIMITER // CREATE PROCEDURE InsertRandomStudents() BEGIN DECLARE i INT DEFAULT 0; WHILE i < 1000 DO INSERT INTO student (createDate, userName, phone, age, sex, introduce) VALUES ( -- createDate: 随机日期(例如:过去10年内) DATE_ADD(NOW(), INTERVAL FLOOR(RAND() * (0 - 3650) + 0) DAY), -- userName: 随机用户名(例如:'User' + 随机数字) CONCAT('User', FLOOR(RAND() * 1000000)), -- phone: 随机电话号码(例如:13800000000 到 13899999999 之间) CONCAT('138', LPAD(FLOOR(RAND() * 999999999), 9, '0')), -- age: 随机年龄(例如:18 到 30 之间) FLOOR(RAND() * (30 - 18 + 1)) + 18, -- sex: 随机性别(M, F, 或 O) ELT(1 + FLOOR(RAND() * 3), 'M', 'F', 'O'), -- introduce: 随机介绍文本(例如:'Hello, I am a student.' 或其他文本) -- 这里为了简化,只使用了一条静态文本,你可以根据需要扩展为多条或更复杂的文本。 'Hello, I am a student.' ); SET i = i + 1; END WHILE; END // DELIMITER ; # 如果是带参数的需要自己传递值,反之不需要 CALL InsertRandomStudents(); # 数据量查询 select count(*) from student;
20条数据,得根据机械/固态硬盘来判断插入所需的时间。机械硬盘会有滋滋滋的声音。
索引测试
查询语句-根据情况修改一下userName的值。
select * from student where userName='User512591';
-- select * from student where userName='User512591'
-- > OK-没有索引
-- > 时间: 0.159s
-- > OK-有索引
-- > 时间: 0.001s
实际的测试结果。
问题语句,前提是选中DDL语句
请帮我根据DDL生成一个添加20万条随机数据的存储过程。要求尽可能的使用中文来添加信息。