一、mysql索引概念
索引就像书的目录,占空间,但是能快速查询。不用整本书的看。
因此索引的功能,提高查询速率,避免全表查询,但是索引会占磁盘空间
二、索引分类
按类别分类
主键索引:主键列内容,唯一,且列不为空
唯一索引:索引列,唯一,列可以为空
普通索引:最基本的索引,没有任何限制
全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时好空间。
按数量分类
单列索引:索引只包含单个列
组合索引:索引包含多个列
——为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。
前缀索引
如果索引列长度过长,这种列索引时将会产生很大的索引文件,不便于操作,可以使用前缀索引方式进行索引
前缀索引应该控制在一个合适的点,控制在0.31黄金值即可(大于这个值就可以创建)
三、Mysql索引主要有两种结构:B+树和hash.
hash
hsah索引在mysql比较少用,他以把数据的索引以hash形式组织起来,因此当查找某一条记录的时候,速度非常快.当时因为是hash结构,每个键只对应一个值,而且是散列的方式分布.所以他并不支持范围查找和排序等功能.
b+tree
b+tree是mysql使用最频繁的一个索引数据结构,数据结构以平衡树的形式来组织,因为是树型结构,所以更适合用来处理排序,范围查找等功能.相对hash索引,B+树在查找单条记录的速度虽然比不上hash索引,但是因为更适合排序等操作,所以他更受用户的欢迎.毕竟不可能只对数据库进行单条记录的操作.