CREATE DATABASE `test_bai` -- 创建数据库
USE `test_bai` -- 切换对应的数据库
CREATE TABLE `app_user`(
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` VARCHAR(50) DEFAULT '' COMMENT '用户名称',
`email` VARCHAR(50) NOT NULL COMMENT '邮箱',
`phone` VARCHAR(20) DEFAULT '' COMMENT '手机号',
`gender` TINYINT DEFAULT '0' COMMENT '性别(0-男 : 1-女)',
`password` VARCHAR(100) NOT NULL COMMENT '密码',
`age` TINYINT DEFAULT '0' COMMENT '年龄',
`create_time` DATETIME DEFAULT NOW(),
`update_time` DATETIME DEFAULT NOW(),
PRIMARY KEY (`id`)
)ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT='app用户表'
# 生成百万数据
SET GLOBAL log_bin_trust_function_creators=TRUE; -- 创建函数一定要写这个
create function mock_data()
returns int
begin
declare num int default 1000000;
declare i int default 0;
while i<num Do
INSERT INTO app_user(`name`,`email`,`phone`,`gender`,`password`,`age`)
VALUES(CONCAT('用户',i),'2548928007qq.com',CONCAT('18',FLOOR(RAND() * ((999999999 - 100000000) + 1000000000))),FLOOR(RAND() * 2),UUID(),FLOOR(RAND() * 100));
SET i = i + 1; -- i自增
end while;
return i;
end
select mock_data();
select * from app_user where name = "用户8999" # 775ms
# 创建索引
create index idx_name on app_user(name); # 3.4s
# 删除索引
drop index idx_name on app_user;
select * from app_user where name = "用户8999" # 2ms
/*
like语句操作
一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。
like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。
*/
select * from app_user where name like "用户899%" # 3ms
select * from app_user where name like "%用户899%" # 839ms