MySQL存储过程——Baidu Comate智能代码助手添加20条DML语句——测试索引效果

2024-05-26 16:21:57 浏览数 (1)

MySQL存储过程——Baidu Comate智能代码助手添加20条DML语句——测试索引效果 

DDL

代码语言:javascript复制
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
);

存储过程

代码语言:javascript复制
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的值。

代码语言:javascript复制
select * from student where userName='User512591';

-- select * from student where userName='User512591' -- > OK-没有索引 -- > 时间: 0.159s -- > OK-有索引 -- > 时间: 0.001s

实际的测试结果。

问题语句,前提是选中DDL语句

请帮我根据DDL生成一个添加20万条随机数据的存储过程。要求尽可能的使用中文来添加信息。

0 人点赞