[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 ...
随机推荐
- IT培训有哪些坑(三)?
我们继续来说说IT培训的坑,今天讲的这点,非常重要,几乎适合于所有层面的培训,不仅仅是IT行业.近期有参加各种培训打算的,包括各种营销培训,管理培训等等,都是有用的. 有大企业,名人背景的不靠谱.不要 ...
- 使用python的虚拟环境virtualenv
技术背景 在前面几篇博客中我们介绍了容器的使用(博客1.博客2.博客3.博客4.博客5),容器是一种系统级的隔离方案,更多的强调资源上的隔离.而这里我们要介绍的python的虚拟环境,更加强调的是依赖 ...
- Flutter Widget中的State
一.Flutter 的声明式视图开发 在原生系统(Android.iOS)或原生JavaScript 开发的话,应该知道视图开发是命令式的,需要精确地告诉操作系统或浏览器用何种方式去做事情. 比如,如 ...
- 计划任务统一集中管理系统cronsun(替代crontab)
一.背景 crontab 是 Linux 系统里面最简单易用的定时任务管理工具,相信绝大多数开发和运维都用到过,很多业务系统的定时任务都是通过 crontab 来定义的,时间长了后会发现存在很多问题: ...
- E. 【例题5】生日相同
解析 字符串操作,本题解采取了多关键词排序 Code #include <bits/stdc++.h> using namespace std; int f, n; struct node ...
- Redis主从&哨兵集群搭建
主从集群 在搭建主从集群前,我们先把Redis安装起来: #解压Redis压缩包 [root@master lf]# tar -zxvf redis-6.2.1.tar.gz -- #安装gcc [r ...
- 201871030140-朱婷婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 2018级卓越班 这个作业要求链接 实验三 结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握GitHub协作开发程序的操作方法. 这个 ...
- leetcode 刷题(数组篇)1题 两数之和(哈希表)
题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元 ...
- 配置Jupyter环境:安装+补全+美化+常用库
1 Jupyter简介 Jupyter Notebook是一个交互式笔记本,支持运行40多种编程语言,本质是一个Web应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和Markd ...
- mariadb_2 单表的增删改查
命令关键字: 创建表 create 删除表 drop 修改表的内容 update 修改表的结构 alter 删除表中内容 delete 增加表中内容 insert 查询表中内容 select ...