索引详解
2020-12-23 18:29:37 0 举报
索引详解
作者其他创作
大纲/内容
几个列字段值联合作为索引组织的树(最左前缀原理)
缺点
优点
存储问题:自增主键存储类似于链表,树高度不可控,在表数据较多时,需要查询多次IO,查询效率低
不采用
数据结构
红黑树
唯一值索引
联合索引
特点:①树高度可控【高度为3即可存储千万数据,默认为16k】②数据量大时,IO查询次数可控。
通过底层计算key的hash值,维护一张【key:hash值 value:表行数据内存地址】的Hash表,与数据量无关,只需查询一次IO即可获取数据
在比较老的版本中,只有 myisam 引擎支持全文索引,在 innodb5.6后引擎也支持全文索引,在 mysql 中全文索引不支持中文。我们一般使用 sphinx 集合coreseek 来实现中文的全文索引。
索引是帮助MySQL高效获取数据的排好序的数据结构
使用主键索引查询和非主键索引查询数据过程有什么区别?主键索引搜索主键索引的B+Tree找到对应的主键即可查询到data数据,而非主键索引的data里面存储的为主键值,所以需要先搜索非主键索引的B+Tree找到主键值,再根据主键值进行主键索引的B+Tree搜索,才可拿到data数据。
使用主键值作为索引节点
1.可以极大地提高检索数据的效率。2.在主键值和唯一值列建立索引,可以保证行数据的唯一性。(原因:每次进行修改数据时需要先维护索引的B+Tree树)3.表连接的连接条件使用索引,可以加速表与表直接的相连。4.在查询中使用索引,可以提高性能。
绝大多数场景使用
自平衡二叉树,存储问题:树高度不可控,在表数据较多时,需要查询多次IO,查询效率低
1.创建索引和维护索引会耗费时间。2.索引文件会占用空间。3.在进行Insert、Delete、Update操作时需要维护索引数据,会降低性能。
优缺点
B+Tree(B-Tree变种)1.非叶子节点不存储data,只存储索引(冗余),可以放更多的索引2.叶子节点包含所有索引字段3.叶子节点用指针连接,提高区间访问的性能
不建议使用
头部节点为BigInt占8字节,中间空白位置占6字节
使用较少,根据业务场景可选择
全文索引
普通索引
使用场景
B+树
Hash表
索引类型
特点:效率高 问题:①hash冲突 ②无法进行范围查询
建议使用
索引概念
二叉树
非主键列值作为索引节点组织的树,其中data中存储主键值
主键索引
0 条评论
下一页