mysql之索引

索引是什么?

索引是存储引擎用于快速找到记录的一种数据结构或存储结构,目录就是经典的索引。

索引的分类

数据结构分类:B+树索引,哈希索引,全文索引

存储方式分类:聚簇索引,非聚簇索引

mysql的存储引擎

储存引擎指的是表的类型。功能即接受上层传下来的命令,对比表中的数据进行读取或写入操作,操作对象为表而非数据库。

常用的有Innodb,Mylsam,memory,csv,archive等

  • Innodb:mysql5.5.8开始为默认的存储引擎,支持事务,行锁设计,外键。支持B+树索引,全文索引。(最常用)
  • mylsam:之前的默认引擎,不支持事务
  • memory:将数据文件放到内存,支持哈希索引。系统重启或崩溃后数据丢失。
  • csv:数据存储为csv格式
  • archive: 只支持insert,select。使用zlib压缩算法,压缩比为1:10。用于归档数据
什么是B+树?

B+树是平衡搜索树。一般高三层。

节点分为内部节点和叶子节点两种,所有内部节点都是叶节点的副本。

B树区别于B+树,B树所有节点都存储记录值。

mysql之索引_第1张图片

B+树

mysql之索引_第2张图片

聚集索引为主键索引,以主键的值作为键,在第三层存储着所有记录

非聚集索引以建立索引的所有值为键,在第三层存储着主键值,查询非聚集索引获取记录需要进行回表查询主键的B+树获取记录。如果只是查询并且条件中只包括非聚集索引,那么则称之为覆盖索引,不需要进行回表。

为什么不像聚集索引一样存储记录,而是采取回表呢?

多处储存值,需要维护数据的一致性,并且浪费存储空间

为什么储存的是主键值,而不是存储物理位置呢?

因为B+树进行插入删除的更新操作会影响储存位置,那么就需要维护多个非聚集索引的数据一致性了。

B+树支持等值,前缀模糊查询,范围值查询,不支持后缀模糊查询。因为索引有效建立在有序的前提下,而字符串是采取字典序从前往后排序,因此不支持后缀模糊查询

设置内存缓存提高查询速度

因为内存与硬盘的速度不是一个量级,那么可以采取增大缓冲池,一次性加载数据索引,提高速度

set global innodb_buffer_pool_size = value#重启/崩溃后失效恢复为my.ini的默认值

或者修改my.ini配置进行修改,永久性

全文索引的使用

https://blog.csdn.net/mrzhouxiaofei/article/details/79940958

你可能感兴趣的:(mysql,数据库,b树)