六、MySQL索引

目录

1 索引的介绍

​ 2 索引的分类

3 创建索引

4 索引使⽤

5 查看索引 

6 删除索引 

7 索引的使⽤总结 

7.1 优点

7.2 缺点


1 索引的介绍

索引,就是⽤来提⾼数据表中数据的查询效率的。

索引,就是将数据表中某⼀列/某⼏列的值取出来构造成便于查找的结构进⾏存储,⽣成 数据表的 ⽬录

当我们进⾏数据查询的时候,则先在 ⽬录 中进⾏查找得到对应的数据的地址,然后再到 数据表中根据地址快速的获取数据记录,避免全表扫描。

 2 索引的分类

MySQL中的索引,根据创建索引的列的不同,可以分为:

主键索引:在数据表的主键字段创建的索引,这个字段必须被primary key修饰,每张表 只能有⼀个主键

唯⼀索引:在数据表中的唯⼀列创建的索引(unique),此列的所有值只能出现⼀次,可以 为NULL

普通索引:在普通字段上创建的索引,没有唯⼀性的限制 组合索引:两个及以上字段联合起来创建的索引

说明 :

1. 在创建数据表时,将字段声明为主键(添加主键约束),会⾃动在主键字段创建主键索 引;

2. 在创建数据表时,将字段声明为唯⼀键(添加唯⼀约束),会⾃动在唯⼀字段创建唯⼀ 索引; 

3 创建索引

唯一索引 

 -- create unique index <index_name> on 表名(列名);
create unique index index_test1 on  emp(eid);

普通索引 

-- create index <index_name> on 表名(列名)
create index index_test2 on  emp(eid);
select *from emp where eid=1001; 

 组合索引

-- create index <index_name> on 表名(列名1、列名2)
create index index_test3 on emp(eid,ename);
select *from emp where eid=1001;            -- 不能执行索引
select *from emp where ename='aaa';   -- -- 不能执行索引

select *from emp where eid=1001 and ename='aaa';

全⽂索引

MySQL 5.6 版本新增的索引,可以通过此索引进⾏全⽂检索操作,因为MySQL全⽂检索 不⽀持中⽂,因此这个全⽂索引不被开发者关注,在应⽤开发中通常是通过搜索引擎 (数据库中间件)实现全⽂检索 

 create fulltext <index_name> on 表名(字段);

4 索引使⽤

索引创建完成之后⽆需调⽤,当根据创建索引的列进⾏数据查询的时候,会⾃动使⽤索 引; 组合索引需要根据创建索引的所有字段进⾏查询时触发。 

在 命令⾏窗⼝中可以查看查询语句的查询规划:

explain select * from tb_testindex where tid=250000\G;  

5 查看索引 

-- 命令⾏

show create table tb_testindex\G;

-- 查询数据表的索引

show indexes from tb_testindex;

-- 查询索引

show keys from tb_testindex; 

6 删除索引 

-- 删除索引:索引是建⽴在表的字段上的,不同的表中可能会出现相同名称的索引

-- 因此删除索引时需要指定表名

drop index index_test3 on tb_testindex; 

7 索引的使⽤总结 

7.1 优点

索引⼤⼤降低了数据库服务器在执⾏查询操作时扫描的数据,提⾼查询效率

索引可以避免服务器排序、将随机IO编程顺序IO 

7.2 缺点

索引是根据数据表列的创建的,当数据表中数据发⽣DML操作时,索引⻚需要更新;

索引⽂件也会占⽤磁盘空间; 

7、3使用索引的原则

更新频繁的列不应该设置索引;

数据量小的表不适合;

重复数据多的字段不应该设为索引(比如性别,只有男和女,一般来说:重复的数据超过百分之15就不应该建索引);

首先应该考虑where和order by 涉及的列上建立索引;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值