Mysql的索引分类和使用

本文详细介绍了Mysql的索引类型,包括普通索引、唯一索引、主键索引、联合索引和全文索引,并讨论了B+Tree等索引数据格式。此外,还讲解了聚集索引和非聚集索引的区别,强调了最左前缀匹配原则在联合索引中的应用。文章进一步提到了索引使用建议,如避免隐式转换、计算和函数运算等问题,以及索引的优缺点和实际开发中的注意事项。
摘要由CSDN通过智能技术生成

实际开发中使用的索引种类

  • 主键索引
  • 唯一索引
  • 普通索引
  • 联合索引
  • 全文索引

索引的格式类型

  • BTree类型
  • Hash类型
  • FullText类型(全文索引
  • RTree类型(空间索引

以索引数据存储方式划分的概念

  • 聚集索引
  • 非聚集索引

以技巧划分

  • 覆盖索引
  • 前缀索引

也有人把聚集索引叫做聚簇索引

.
.

一、索引介绍

索引是一种数据结构,索引的作用主要是为了提高检索效率,添加一个索引需要选择一个字段作为索引依据

索引数据格式主要有两种
  1. Hash
  2. B+Tree

在实际开发中,其实用的最多的是B+Tree数据类型,因为hash数据格式是不支持范围查询的,而基于二叉树数据结构的B+Tree可以支持范围查询(注:B+Tree是B树的进化版)

拓展

(1)Mysql索引为什么使用B+Tree数据结构?

从计算机原理出发,是因为索引本身消耗就很大,不可能全部储存到内存中,因此索引往往索引文件的形式存储在磁盘上,那这样话,磁盘IO效率就会起决定性的作用。

(2)全文索引和空间索引是什么?
.
.

二、索引类型

1、普通索引

普通索引是最基本的索引,也是最常用的索引,创建只是为了提高查询效率,值可以为空,没有任何限制

alter table 表名 add index 索引名(添加索引的字段)

2、唯一索引

唯一索引和普通索引类似,值也可以为空,唯一区别是添加的字段是唯一性,列值不允许重复

alter table 表名 add unique 索引名(添加索引的字段)

3、主键索引

主键索引是一种特殊的唯一索引, 值不允许为空列值不允许重复,且一张表只允许有一个主键索引

alter table 表名 add primary key (添加索引的字段)

4、联合索引

联合索引,顾名思义,就是多个索引联合在一起组成的一种索引类型。

//索引名可以是index_xx_xx
alter table 表名 add index 索引名(索引1,索引2,索引3)
关于联合索引的拓展

(1)最左前缀匹配原则

建立联合索引时会遵循最左匹配原则,即最左优先,在检索数据时从联合索引的最左边开始匹配

例如🌰

在user表中为 name、address、phone 三个字段添加联合索引

ALTER TABLE user ADD INDEX index_three(name,address,phoen)

下面三条sql语句都能命中索引

SELCET * FROM user WHERE address =’ 北京’ AND phone = ‘12345’ AND name = ‘张三’;

SELCET * FROM user WHERE name = ‘张三’ AND address = ‘北京’;

SELCET * FROM user WHERE name = ‘张三’;

这三条sql语句都会匹配联合索引,按顺序是 (name,address,phone) 、(name,address) 、(name),其实使用联合索引时可以不用按照建索引时候的顺序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值