[DB] MySQL 索引分类
按数据结构
- B树索引
- 数据位于叶子节点,到任何一个叶子节点的距离相同,一般不超过3-4层
- B+树索引:每个叶子节点除了数据还存放前后叶子节点的指针,方便快速检索,是InnoDB采用的索引结构
- Hash索引
- 对数据建立Hash表,数据本身无序存储
- LSM树索引
- 所有写操作先进入内存中的分段,排序合并后写入硬盘
- Fulltext索引
- R树索引
- 用于索引空间信息
按实现方式
- 聚集索引(聚簇索引)
- 叶子节点存放数据
- 优点:按主键排序存储数据,查询效率高
- 缺点:
- 插入速度严重依赖插入顺序,按主键顺序插入最快,否则会出现页分裂影响性能
- 插入、删除、更新效率低
- 通过二级索引访问需要两次索引查找(主键-->行数据)
- 非聚集索引(非聚簇索引)
- 不影响数据表的物理存储顺序
- 叶子节点存储主键值,或指向数据的指针
- 访问数据需要二次查找,第一次找到主键值,第二次根据主键值找到数据
按功能
- 普通索引:用于提高查询效率,没有约束
- 唯一索引:在普通索引基础上,增加数据唯一性的约束,一张表里可以有多个
- 主键索引:在唯一索引基础上,增加了不为空的约束,一张表里最多只有一个
- 全文索引:ES和Solr
按字段个数
- 单一索引:索引列为一列
- 联合索引:索引列为多列
按对应键
- 主键索引
- 对主键创建的索引
- 叶子节点只能按一棵B+树排序,故一张表只能有一个
- InnoDB下是聚簇索引,MyISAM下是非聚簇索引
- 辅助键索引(二级索引)
- 对非主键创建的索引
- 一张表可以有多个
按存储引擎
- InnoDB
- 主索引:保存数据,key是表的主键
- 辅助索引:记录主键的值而不是地址
- 实现方式:聚集索引(数据和索引在一起)
- MyISAM
- 主索引:索引和数据分离,索引叶子节点仅保存数据地址
- 辅助索引:和主索引无区别
- 实现方式:非聚集索引(数据和索引不在一起)


参考
https://www.cnblogs.com/jiawen010/p/11805241.html
https://www.jianshu.com/p/fa8192853184
[DB] MySQL 索引分类的更多相关文章
- mysql 索引分类以及用途分析
MySQL索引分为普通索引.唯一性索引.全文索引.单列索引.多列索引等等.这里将为大家介绍着几种索引各自的用途. 一. MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTre ...
- mysql索引分类
mysql索引分类 一.总结 一句话总结: 主键索引:设定为主键后数据库会自动建立索引,innodb为聚簇索引 单值索引:一个索引只包含单个列,一个表可以有多个单列索引:CREATE INDEX id ...
- mysql索引分类及实现原理
索引分类:主键索引.唯一索引.普通索引.全文索引.组合索引 1.主键索引:即主索引,根据主键pk_clolum(length)建立索引,不允许重复,不允许空值 ALTER TABLE 'table_n ...
- MySQL索引分类及相关概念辨析
本文链接:https://www.cnblogs.com/ibigboy/p/16198243.html 之前的一篇<MySQL索引底层数据结构及原理深入分析>很受读者欢迎,成功地帮大家揭 ...
- mysql 索引分类
在数据库表中,对字段建立索引可以大大提高查询速度.通过善用这些索引,可以令 MySQL的查询和运行更加高效.索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常 ...
- mysql索引分类及注意事项
MYSQL索引主要分为四类:主键索引,普通索引(聚合,非聚合),唯一索引,全文索引 全文索引,主要是针对对文件,文本的检索, 比如文章, 全文索引针对MyISAM有用. 索引的原理:利用二叉树(哈希表 ...
- Mysql索引分类和索引优化
一. MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或<=>的等式比较. 1.普通索引:create index on Ta ...
- MySQL索引分类和各自用途
一. MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或<=>的等式比较. 1.普通索引:create index on Ta ...
- MySQL索引的分类、结构、使用场景
MySQL索引分类 1.主键索引:设定为主键后数据库会自动建立索引,innodb为聚簇索引 语法: 随表一起建索引: CREATE TABLE customer (id INT(10) UNSIGNE ...
随机推荐
- 什么是事务?事务的四个特性(ACID)?并发事务带来哪些问题?事务隔离级别都有哪些?事务的传播特性
什么是事务? 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事物的四个 ...
- Redis 6.1 redis-cluster-proxy 实践说明
背景 Redis3.0版本之后开始支持了Redis Cluster,Redis也开始有了分布式缓存的概念.关于Redis Cluster的相关说明,可以看之前的几篇文章:Redis Cluster ...
- [枚举]P1085 不高兴的津津
不高兴的津津 题目描述 津津上初中了.妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班.另外每周妈妈还会送她去学习朗诵.舞蹈和钢琴.但是津津如果一天上课超过八个小时 ...
- 让你的程序炫起来!少有人知道但超酷的 Python 进度条开源库
本文适合有 Python 基础的朋友 本文作者:HelloGitHub-Anthony HelloGitHub 推出的<讲解开源项目>系列,本期介绍让你快速拥有完美进度条的 Python ...
- Ansible 教程
[注]本文译自:https://www.edureka.co/blog/ansible-tutorial/ 在阅读本文之前,你应该已经知道,Ansible 构成了 DevOps 认证的关键部分,它 ...
- [Fundamental of Power Electronics]-PART I-4.开关实现-0 序
4 开关实现 在前面的章节中我们已经看到,可以使用晶体管,二极管来作为Buck,Boost和其他一些DC-DC变换器的开关元件.也许有人会想为什么会这样,以及通常如何实现半导体的开关.这些都是值得被提 ...
- Istio最佳实践系列:如何实现方法级调用跟踪?
赵化冰,腾讯云高级工程师,Istio Member,ServiceMesher 管理委员,Istio 项目贡献者,热衷于开源.网络和云计算.目前主要从事服务网格的开源和研发工作. 引言 TCM(Ten ...
- 自学转行JAVA,没有项目经历怎么找工作?
应届生或者是刚参加工作的转行人员都有这样一个疑惑,刚学出来没有工作经验,但是企业又要求你必须要有工作经验,但是刚毕业找不到工作就不可能有工作经验,感觉陷入一个死循环.其实这种情况那些企业是不可能不知道 ...
- C语言-字符串函数的实现(五)之strstr
C语言中的字符串函数有如下这些 获取字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp ...
- 配置Jupyter环境:安装+补全+美化+常用库
1 Jupyter简介 Jupyter Notebook是一个交互式笔记本,支持运行40多种编程语言,本质是一个Web应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和Markd ...