DDL
CREATE TABLE `亿万富翁表` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`birthday` date NOT NULL,
`userName` varchar(100) NOT NULL,
`countMoney` decimal(15,2) NOT NULL,
`age` int(11) NOT NULL,
`sex` varchar(10) NOT NULL,
`address` varchar(200) NOT NULL,
`introduce` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=600008 DEFAULT CHARSET=utf8;
DQL
DELIMITER //
ALTER TABLE `亿万富翁表` AUTO_INCREMENT = 1;
CREATE PROCEDURE random_addinfo()
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i < 200000 DO
INSERT INTO 亿万富翁表 (birthday, userName, countMoney, age, sex, address, introduce)
VALUES (
-- 生成随机的生日(例如:1900-01-01 到 2023-12-31 之间)
FROM_UNIXTIME(UNIX_TIMESTAMP('1900-01-01') + FLOOR(RAND() * (UNIX_TIMESTAMP('2023-12-31') - UNIX_TIMESTAMP('1900-01-01') + 1))),
-- 生成随机的用户名(假设用户名格式为 user1, user2, ..., userN)
CONCAT('user', FLOOR(RAND() * 1000000)),
-- 生成随机的资产(例如:1亿到1000亿之间)
FLOOR(100000000 + RAND() * 99000000000),
-- 生成随机的年龄(例如:20到90之间)
FLOOR(20 + RAND() * 71),
-- 随机分配性别
IF(RAND() > 0.5, '男', '女'),
-- 生成随机地址(这里简化为随机字符串,你可以根据需要自定义更复杂的地址生成逻辑)
CONCAT('地址', FLOOR(RAND() * 1000000)),
-- 生成随机介绍(同样简化为随机字符串)
CONCAT('介绍', FLOOR(RAND() * 1000000))
);
SET i = i + 1;
END WHILE;
END //
DELIMITER ;
call random_addinfo();
实验索引的能力
select count(*) from 亿万富翁表;
#实验索引的能力
select * from 亿万富翁表 where userName='user111642';
-- select * from 亿万富翁表 where userName='user111642'
-- > OK-无索引
-- > 时间: 0.237s
-- select * from 亿万富翁表 where userName='user111642'
-- > OK-有索引,所需时间缩短
-- > 时间: 0.003s
--