索引是什么?

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

索引的分类

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


(资料图)

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

mysql的存储引擎

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

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

什么是B+树?

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

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

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

B+树

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

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

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

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

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

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

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

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

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

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

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

全文索引的使用

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

推荐内容