关于索引的使用

前言

大家好,我是Maybe。最近在学习索引。为大家分享一下索引的创建以及使用索引的注意事项。

如何创建索引

自动创建

当我们为一张表加主键约束(Primary key),外键约束(Foreign Key),唯一约束(Unique)时,MySQL会自动为对应的列自动创建一个索引。

如果表不指定任何约束时,MySQL会自动为每一列生成一个索引并用 ROW_ID进行标识。

手动创建

-- 创建普通索引
-- 创建表时的时候指定主键
CREATE table t_pk1(
id BIGINT PRIMARY key auto_increment,
name varchar(20)
);
show index from t_pk1;

-- 创建表的时候单独指定主键列
CREATE table t_pk2(
id BIGINT  auto_increment,
name varchar(20),
PRIMARY KEY(id)
);

-- 修改表中的列为主键索引
CREATE table t_pk3(
id BIGINT,
name VARCHAR(20)
);
desc t_pk3;
show index from t_pk3;
-- 修改表中的列为主键索引
ALTER table t_pk3 add PRIMARY KEY(id);
alter table t_pk3 add id BigINt auto_increment;


-- 创建唯一键的索引
-- 创建表时创建唯一键
CREATE table t_test_1(
id bigint PRIMARY KEY auto_increment,
name varchar(20) UNIQUE
);
desc t_test_1;
show index from t_test_1;
 -- 修改表中的列为唯一索引
 CREATE table t_test_2(
id bigint PRIMARY KEY auto_increment,
name varchar(20) 
);
ALTER table t_test_2 add unique(name);
show index from t_test_2;

-- 普通索引
-- 创建表时创建普通索引

CREATE table t_index1(
id bigint PRIMARY key auto_increment,
name varchar(20) unique,
sno varchar(20),
index (sno)
);
desc t_index1;
show index from t_index1;

-- 修改表中的列为普通索引
CREATE table t_index2(
id bigint PRIMARY key auto_increment,
name varchar(20) unique,
sno varchar(20)
);
alter table t_index2 add index(sno);
show index from t_index2;


-- 单独创建索引并指定索引名
CREATE table t_index3(
id bigint PRIMARY key auto_increment,
name varchar(20) unique,
sno varchar(20)
);
show index from t_index3;
create index idx_t_index3_sno on t_index3(sno); 
-- 删除索引idx_t_index3_sno
-- 索引名最好定义为 idx_表名_列名
alter table t_index3 drop index idx_t_index3_sno;
create index idx_t_index3_sno on t_index3(sno);

-- 复合索引
-- 创建表的时候指定索引
CREATE table t_index4(
id bigint PRIMARY key auto_increment,
name varchar(20) unique,
sno varchar(20),
class_id bigint,
index (sno,name)
);
show index from t_index4;

-- 单独创建索引并指定索引名

CREATE table t_index5(
id bigint PRIMARY key auto_increment,
name varchar(20) unique,
sno varchar(20),
class_id bigint
);
show index from t_index5;
create index idx_t_index5_sno_name on t_index5(sno,name);

-- 删除主键索引前,必须先将自增列改为非自增
ALTER table t_index5 MODIFY id BIGINT;
alter table t_index5 drop PRIMARY KEY;
show index from t_index5;
-- 删除复合索引
alter table t_index5 drop index  idx_t_index5_sno_name;

 使用索引的注意事项

 

结语 

再见~希望可以帮助到有需要的人~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值