diff --git "a/50 \345\274\240\350\265\267\347\221\236/20231019 \347\264\242\345\274\225.md" "b/50 \345\274\240\350\265\267\347\221\236/20231019 \347\264\242\345\274\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..d42f6f10e86d5e965a7523193e4b6851d5a9a789 --- /dev/null +++ "b/50 \345\274\240\350\265\267\347\221\236/20231019 \347\264\242\345\274\225.md" @@ -0,0 +1,89 @@ +#### 索引优点缺点: + +```mysql +索引的优点: +1.提升了select速度 +2.提高了数据检索的效率 +3.降低了数据库的io成本 +``` + +```mysql +索引的缺点: +1.降低了insert,update,delete的速度 +2.提高了查询速度,降低了更新表的速度 +``` + +#### 索引的分类: + +```mysql +单列索引: +方式一: +create index 索引名 on 表名 +直接删除索引: +drop index 索引名 on 表名 +修改表结构追加普通索引: +alter table 表名 add index 索引名(列名) +修改表结构删除索引: +alter table 表名 drop index 索引名 +查看表的索引: +show index from 表名; +``` + +#### 唯一索引: + +```mysql +create unique index 索引名 on 表名(列名) +alter table 表名 add unique 索引名 +alter table 表名 drop primary key +``` + +#### 作业: + +```mysql +create database test_1019 charset utf8; +use test_1019; +create table tb_user( + id int primary key auto_increment comment '主键', + name varchar(50) not null comment '用户名', + phone varchar(11) not null comment '手机号', + email varchar(100) comment '邮箱', + profession varchar(11) comment '专业', + age tinyint unsigned comment '年龄', + gender char(1) comment '性别 , 1: 男, 2: 女', + status char(1) comment '状态', + createtime datetime comment '创建时间' +) comment '系统用户表'; + + + +DROP procedure tb_user +delimiter // +create procedure tb_user() +begin +declare i int; +set i=1; +while i<5000000 DO +insert into tb_user values(null,'小米','15627381937','xiaomi88@qq.com','软件工程',18,'2','4','2003-10-19 00:00:00'); +set i=i+1; +end while; +end // +delimiter; +call tb_user(); +select * from tb_user; + +-- 执行查询文件tb_user.sql,数据准备好了之后,完成如下需求: +-- 1. name字段为姓名字段,该字段的值可能会重复,为该字段创建索引。 +create index idx_name on tb_user(name); +-- 2. phone手机号字段的值,是非空,且唯一的,为该字段创建唯一索引。 +create unique index idx_phone on tb_user(phone); +-- 3. 为profession、age、status创建联合索引。 +create index idx_pas on tb_user(profession,age,`status`); +drop index idx_pas on tb_user; +-- 4. 为email建立合适的索引来提升查询效率。 +create unique index idx_email on tb_user(email); +-- 5. 查看tb_user表的所有的索引数据。 +show index from tb_user; +``` + + +