mysql索引学习总结

本文详细介绍了如何在数据库中创建普通索引、唯一索引、全文索引和多列索引,包括创建时机、语法和示例。此外,还涵盖了查看索引执行、隐藏和删除索引的方法。对于数据库优化者和开发者来说,这是理解和利用索引提高查询性能的重要指南。
摘要由CSDN通过智能技术生成

索引

索引主要是针对表中的列,增加索引的目的是加快查询速度,索引可以对单列或多列进行添加

1 普通索引

1.1 在创建表时添加索引

普通索引,在创建该类索引时,不给索引添加任何限制条件(唯一、非空等),可以在任意列上创建

格式:

create table tableName(
propname1 type1, propname2 type2,
INDEX|KEY indexName (propname1(length) ASC|DESC));

其中 INDEX|KEY 表示可以选择其中一个,索引一般使用index,indexName可以省略不写,length也可以省略不写;

ASC|DESC 表示可以选择一个,ASC表示对索引字段查询时会升序显示,DESC表示对索引字段查询时会降序显示,ASC|DESC也可以省略不写

【例】一张学生表,有id,姓名,班级,老师栏位,对姓名栏位增加索引

create table student(id int, name varchar(4),
class_name varchar(5), teacher varchar(4),
INDEX index_name(name);
1.2 在已有的表上添加索引

格式:

ALTER table tableName ADD INDEX|KEY indexName(porpname(length) ASC|DESC);

其中 INDEX|KEY 表示可以选择其中一个,索引一般使用index,indexName可以省略不写,length也可以省略不写;

ASC|DESC 表示可以选择一个,ASC表示对索引字段查询时会升序显示,DESC表示对索引字段查询时会降序显示,ASC|DESC也可以省略不写

2 唯一索引

对某一列进行设置唯一索引,该列需要为 UNIQUE 唯一属性

2.1 在创建表时添加索引

格式:

create table tableName(
propname1 type1, propname2 type2,
UNIQUE INDEX|KEY indexName (propname1(length) ASC|DESC));

与普通索引相比,只需要在INDEX前加上UNIQUE

2.2 在已有的表上添加索引

方式一格式:

ALTER table tableName ADD 
UNIQUE INDEX|KEY indexName(porpname(length) ASC|DESC);

方式二格式:

create UNIQUE INDEX|KEY indexName on tableName(
propname(length) ASC|DESC);

3 全文索引

全文索引主要是对字符类型(varchar/char/text)的字段进行建立基于分词的索引,查询条件中可以对添加索引的字段类似于模糊查询

3.1 在创建表时添加索引

创建格式:

create table tableName(
propname1 type1, propname2 type2,
FULLTEXT INDEX|KEY indexName (propname1(length));

与普通索引相比,只需要在INDEX前加上FULLTEXT

3.2 在已有的表上添加索引

创建格式:
方式1:

ALTER table tableName ADD 
FULLTEXT INDEX|KEY indexName(porpname(length));

方式二格式:

create FULLTEXT INDEX|KEY indexName on tableName(
propname(length));
3.3 使用索引

格式:

select * from tableName where MATCH(propname)AGAINST('关键字');

4 多列索引

多列索引就是对多列进行添加索引,只有当查询条件中使用了第一个索引字段时,多列索引才会被触发

4.1 在创建表时添加索引

创建格式:

create table tableName(
propname1 type1, propname2 type2,propname3, type3,
INDEX|KEY indexName (
propname1(length)ASC|DESC, 
propname2(length)ASC|DESC, 
propname3(length)ASC|DESC);

查询时,使用:select * from tableName where propname>0;
其中使用了第一个索引字段作为查询条件,多列索引会被触发

4.2 在已有的表上添加索引

创建格式:
方式1:

ALTER table tableName ADD 
INDEX|KEY indexName(
propname1(length)ASC|DESC, 
propname2(length)ASC|DESC, 
propname3(length)ASC|DESC);

方式二格式:

create INDEX|KEY indexName on tableName(
propname1(length)ASC|DESC, 
propname2(length)ASC|DESC, 
propname3(length)ASC|DESC);

5 查看索引执行情况

使用explain 查询语句
其中查询语句的条件中包含索引字段,会显示索引的执行情况
索引执行
其中,
key:为使用的索引,若显示为null则表示没有索引
possible_keys:显示应用在表中的索引
key_len:为索引中使用的字节数

6 隐藏索引

可以对索引进行隐藏,从而不会触发索引,可以用来测试索引
格式:

ALTER table tableName INDEX indexName INVISIBLE; //隐藏索引
ALTER table tableName INDEX indexName VISIBLE; //取消隐藏

7 删除索引

索引有可能会降低表的更新速度,可以对索引进行删除
格式:

DROP INDEX indexName ON tableName;

如果需要对索引进行更新,可以先进行删除,再进行创建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值