MySQL索引简介

一.引言

索引是数据库中最重要的概念之一,它的作用是为了提高数据的查询速度,索引好比一本词典的目录,通过这个“目录”便可以快速查找到你感兴趣的词语。

二.索引的数据结构

Mysql索引主要有两种结构:B+Tree索引和Hash索引。我们平常所说的索引,如果没有特别指明,一般都是指B树结构组织的索引(B+Tree索引)。

B+Tree是一种多路查找树,它可以大幅提高海量数据的查询速度。关于其详细介绍,可查看文末的参考资料。

三.索引的分类

1.单列索引:一个索引只包含单个列,它又可细分为

  • 普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
  • 唯一索引:索引列中的值必须是唯一的,但是允许为空值
  • 主键索引:是一种特殊的唯一索引,不允许有空值。

2.组合索引:在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀原则。

建立组合索引时应遵循“最左前缀”原则,把最常用作为检索或排序的列放在最左,比如假设建立了user_id, user_name, status(按该顺序建立)复合索引, 实际上是创建了三个MySQL可利用的索引

user_id, user_name, status
user_id, user_name
user_id

只要在查询中指定了user_id的值,无论是否有user_name或者status,MySQL都可以使用这个索引。但是,如果不包含user_id,只包含了user_name或status,那么,MySQL不能利用这个索引。

3.全文索引:只有在MyISAM存储引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引

4.空间索引:空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON。

参考资料

MySQL(五) MySQL中的索引详讲

MySQL索引原理以及查询优化

从B树、B+树、B*树谈到R 树

MySQL存储引擎--MyISAM与InnoDB区别

Innodb与Myisam引擎的区别与应用场景

聚集索引与非聚集索引的总结

韩顺平老师讲mysql优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值