索引是什么?
索引是存储引擎用于快速找到记录的一种数据结构或存储结构,目录就是经典的索引。
索引的分类
数据结构分类: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树所有节点都存储记录值。
B+树
聚集索引为主键索引,以主键的值作为键,在第三层存储着所有记录
非聚集索引以建立索引的所有值为键,在第三层存储着主键值,查询非聚集索引获取记录需要进行回表查询主键的B+树获取记录。如果只是查询并且条件中只包括非聚集索引,那么则称之为覆盖索引,不需要进行回表。
为什么不像聚集索引一样存储记录,而是采取回表呢?
多处储存值,需要维护数据的一致性,并且浪费存储空间
为什么储存的是主键值,而不是存储物理位置呢?
因为B+树进行插入删除的更新操作会影响储存位置,那么就需要维护多个非聚集索引的数据一致性了。
B+树支持等值,前缀模糊查询,范围值查询,不支持后缀模糊查询。因为索引有效建立在有序的前提下,而字符串是采取字典序从前往后排序,因此不支持后缀模糊查询
设置内存缓存提高查询速度
因为内存与硬盘的速度不是一个量级,那么可以采取增大缓冲池,一次性加载数据索引,提高速度
set global innodb_buffer_pool_size = value#重启/崩溃后失效恢复为my.ini的默认值
或者修改my.ini配置进行修改,永久性
全文索引的使用
标签:存储,聚集,查询,索引,引擎,mysql,节点 From: https://www.cnblogs.com/zhoumu/p/17013746.htmlhttps://blog.csdn.net/mrzhouxiaofei/article/details/79940958