按数据结构

  • 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. .net 预处理指令符的使用

    目录 什么是预处理指令符? 预处理指令符的使用 自定义指令符 使用Visual Studio快速定义指令符 定义指令符区域 什么是预处理指令符? 当C#编译器找到一条预处理指令#if,最后找到一条指令 ...

  2. 基于ZXing.Net生成一维二维码

    新阁教育-喜科堂付工原创 最近很多小伙伴对一维码.二维码比较感兴趣,今天主要给大家分享一个C#生成条形码和二维码的案例. C#作为一个高级语言,特点就是快! 我们使用的是开源库ZXing,ZXing是 ...

  3. Linux 网络工具中的瑞士军刀 - socat & netcat

    独立博客阅读:https://ryan4yin.space/posts/socat-netcat/ 文中的命令均在 macOS Big Sur 和 Opensuse Tumbleweed 上测试通过 ...

  4. 【Linux】关于Linux的系统编程总结

    作者:李春港 出处:https://www.cnblogs.com/lcgbk/p/14673383.html 目录 系统编程 (一)进程 1.进程的概念 2.进程函数接口 (1)fork()在进程内 ...

  5. 并发编程之ThreadLocal

    并发编程之ThreadLocal 前言 当多线程访问共享可变数据时,涉及到线程间同步的问题,并不是所有时候,都要用到共享数据,所以就需要线程封闭出场了. 数据都被封闭在各自的线程之中,就不需要同步,这 ...

  6. Vue3发布半年我不学,摸鱼爽歪歪,哎~就是玩儿

    是从 Vue 2 开始学基础还是直接学 Vue 3 ?尤雨溪给出的答案是:"直接学 Vue 3 就行了,基础概念是一模一样的." 以上内容源引自最新一期的<程序员>期刊 ...

  7. 805. Split Array With Same Average

    In a given integer array A, we must move every element of A to either list B or list C. (B and C ini ...

  8. UC-Android逆向工程师面试第2题分析

    博客链接:http://blog.csdn.net/qq1084283172/article/details/52133172 一.简介 这个题目是别人面试UC优视集团Android逆向工程师一职位的 ...

  9. HackingLab基础关

    目录 1:Key在哪里? 2:再加密一次你就得到key啦~ 3:猜猜这是经过了多少次加密? 4:据说MD5加密很安全,真的是么? 5:种族歧视 6:HAHA浏览器 7:key究竟在哪里呢? 8:key ...

  10. 发生系统错误 1275.此驱动程序被阻止加载 寒江孤钓<<windows 内核安全编程>> 学习笔记

    安装书中第一章成功安装first服务之后,在cmd窗口使用命令行 "net start first" 时, 出现 "发生系统错误 1275.此驱动程序被阻止加载" ...