按数据结构

  • 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 索引分类的更多相关文章

  1. mysql 索引分类以及用途分析

    MySQL索引分为普通索引.唯一性索引.全文索引.单列索引.多列索引等等.这里将为大家介绍着几种索引各自的用途. 一. MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTre ...

  2. mysql索引分类

    mysql索引分类 一.总结 一句话总结: 主键索引:设定为主键后数据库会自动建立索引,innodb为聚簇索引 单值索引:一个索引只包含单个列,一个表可以有多个单列索引:CREATE INDEX id ...

  3. mysql索引分类及实现原理

    索引分类:主键索引.唯一索引.普通索引.全文索引.组合索引 1.主键索引:即主索引,根据主键pk_clolum(length)建立索引,不允许重复,不允许空值 ALTER TABLE 'table_n ...

  4. MySQL索引分类及相关概念辨析

    本文链接:https://www.cnblogs.com/ibigboy/p/16198243.html 之前的一篇<MySQL索引底层数据结构及原理深入分析>很受读者欢迎,成功地帮大家揭 ...

  5. mysql 索引分类

    在数据库表中,对字段建立索引可以大大提高查询速度.通过善用这些索引,可以令 MySQL的查询和运行更加高效.索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常 ...

  6. mysql索引分类及注意事项

    MYSQL索引主要分为四类:主键索引,普通索引(聚合,非聚合),唯一索引,全文索引 全文索引,主要是针对对文件,文本的检索, 比如文章, 全文索引针对MyISAM有用. 索引的原理:利用二叉树(哈希表 ...

  7. Mysql索引分类和索引优化

    一. MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或<=>的等式比较. 1.普通索引:create index on Ta ...

  8. MySQL索引分类和各自用途

    一. MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或<=>的等式比较. 1.普通索引:create index on Ta ...

  9. MySQL索引的分类、结构、使用场景

    MySQL索引分类 1.主键索引:设定为主键后数据库会自动建立索引,innodb为聚簇索引 语法: 随表一起建索引: CREATE TABLE customer (id INT(10) UNSIGNE ...

随机推荐

  1. python3使用cv2对图像进行基本操作

    技术背景 在机器视觉等领域,最基本的图像处理处理操作,可以通过opencv这个库来实现.opencv提供了python的接口,所需安装的库为opencv-python,但是在库的导入的时候一般用的是i ...

  2. Autofac 框架初识与应用

    文字首发地址 一.前言 这上一篇中,主要讲述了什么是IoC容器,以及了解到它是DI构造函注入的框架,它管理着依赖项的生命周期以及映射关系,同时也介绍实践了在ASP.Net Core中,默认提供的内置I ...

  3. Processing 状态机应用研究(线性转换)

    状态机(State Machine)是一个抽象概念,是一个逻辑严谨的数学抽象.它的这种概念在现实生活中处处都有应用,或者说现实世界就充满状态机.要讨论状态机,就涉及到相关概念,比如:State 状态, ...

  4. 解决SQLPLUS无法使用上下箭头

    1 问题描述 SQLPLUS中使用上下箭头无法获取历史命令,如下图所示: 按上下箭头会显示^[[A/^[[B. 2 解决方案 需要安装rlwrap,可以的话可以用包管理器安装,笔者环境CentOS,这 ...

  5. Jenkins 分布式和并发构建

    1. 分布式构建 1.1 添加 linux 节点 1.2 添加 windows 节点 2. 并发构建 2.1 原理 2.2 示例:分别用 chrome/IE/Firefox 并行测试 1. 分布式构建 ...

  6. 2- MySQL客户端工具Workbench的使用及数据库的操作

    数据库增删改查快速入门 查看数据库: show databases; 选在数据库:use 数据库名: 创建数据库:create  database db_name; 删除数据库:drop databa ...

  7. 13- jmeter性能测试案例

    配置原件 HTTP请求默认值 前置处理程序 定时器 取样器 后置处理器:正则表达式提取器 断言 监听器 性能测试流程 1.评估获取性能测试需求(访问量大,操作频繁) 2.确定性能测试目标 : 并发用户 ...

  8. hdu4535

    题意: 吉哥系列故事--礼尚往来 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ...

  9. Python小游戏 -- 猜数字

    Python初学者小游戏:猜数字 游戏逻辑:电脑随机生成一个数字,然后玩家猜数字,电脑提示猜的数字大了还是小了,供玩家缩小数字范围,达到既定次数后,玩家失败.若在次数内猜对,玩家获胜. 涉及知识点:r ...

  10. Metasploit Framework(MSF)的使用

    目录 Metasploit 安装Metasploit 漏洞利用(exploit) 攻击载荷(payload) Meterpreter MS17_010(永恒之蓝) 辅助模块(探测模块) 漏洞利用模块 ...