前言
很多人对数据库索引可能都是知其然却不知其所以然,对索引没有很深入的理解,在使用过程中也一知半解,导致没有办法准确高效地使用索引,甚至存在不少误用的情况,导致使用索引反而降低了系统的性能。下面就以MySQL索引为对象,通过几篇文章来带大家好好的学习下索引的知识。
什么是索引
数据库索引指的是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中的数据。简单理解就是类似书籍的目录,独立于书籍内容之外,能够快速根据目录查到到需要的文章的页码。如果没有目录,我们就要一页一页地翻页来查找文章,同理,如果没有索引的话,数据库系统只能一行一行地查找数据,注意,如果没有达到限制查找的行数,这样的遍历就要一直进行下去,直到全部遍历完。
显而易见,这样的查找效率是不可接受的。所以我们需要索引的帮助,索引可以提升数据查找的效率,从而大大提升数据库的性能。
索引分类
索引一般可以分为四类
- 单列索引:单列索引指的是只包含一列的索引,又可分为三种:
- 普通索引:普通索引是最基本的索引类型,没有什么限制,且允许空值和重复值。
- 唯一索引:唯一索引列中的值必须是唯一的,允许存在一个空值。多个空值仍然会视为重复
- 主键索引:主键索引是特殊的唯一索引,不允许存在空值。
- 组合索引:组合索引也就是多列索引,由多列组合创建的索引,使用的时候遵循最左前缀原则。
- 全文索引:全文索引只有MyISAM引擎支持,且只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引,主要用于做文章的关键字搜索的
- 空间索引:空间索引是对空间数据类型的字段建立的索引。
数据结构
学习MySQL索引的第一步,是先了解下MySQL索引的数据结构,也就是索引是用什么结构来存储的,了解了索引的数据结构才能帮助我们更好地理解&#