二级索引又称辅助索引、非聚集索引(no-clustered index)。b+tree树结构。然而二级索引的叶子节点不保存记录中的所有列,其叶子节点保存的是<健值,(记录)地址>。好似聚集索引中非叶子节点保存的信息,不同的是二级索引保存的是记录地址,而聚集索引保存的是下一层节点地址。记录的地址一般可以保存两种形式。 
1. 记录的物理地址,页号:槽号:偏移量 
2 . 记录的主键值

innodb引擎是索引组织表,所有记录都放在聚集索引里,因此其辅助索引中的记录地址存放的主键的键值。

innodb读操作:

通过二级索引查询记录仅能得到主键值,要查询完整的记录还需要再通过一次聚集索引查询,这种查询方式为书签查找(bookmark lookup)。 
注:聚集索引:例如查字典,每个字所在的位置有一个页码,如果你知道一个字的所在具体页数便可直接翻到相应的页,此刻可以把字典中的页码看成主键。字典的正文就是一个查询目录而不需要在通过其他目录来查找。这种正文本身具有一定的规则排序的目录称为聚集索引。 
二级索引:此操作就如查字典,先找到生字的偏旁部首查找到字在哪一页(获得主键的位置),然后再翻到生字的具体章节叶。

innodb写操作:

仅当主键发生改变时,才会更新二级索引

二级索引的非叶子节点存放的记录格式为<键值,主键值,地址>,二级索引的非叶子节点依然存在主键信息。二级索引节点的记录不保存隐藏列xid和roll ptr。聚集索引的非叶子节点保存的是下一层节点地址。 
由于二级索引不包含记录的完整信息,在innodb存储引擎中二级索引的树高度比聚簇索引的树高度小,二级索引效率低。

mysql索引之二级索引学习总结相关推荐

  1. MySQL学习笔记-主键索引和二级索引

    文章目录 MySQL学习笔记-主键索引和二级索引 1.笔记图 2.索引的常见模型 3.InnoDB 的索引模型 4.主键索引和普通索引查询的区别 5.如何选择主键字段 6.笔记图 7.回表过程 8.最 ...

  2. mysql InnoDB 聚集索引,二级索引

    InnoDB 索引分为聚集索引(聚簇索引)与二级索引. 聚集索引: 1: 全表唯一且必有一个,主键索引属于聚集索引. 2: 索引项的顺序就是表中数据记录的物理顺序. 3: 若定义了主键索引InnoDB ...

  3. 一文讲清,MySQL中的二级索引

    主键索引是InnoDB存储引擎默认给我们创建的一套索引结构,我们表里的数据也是直接放在主键索引里,作为叶子节点的数据页. 但我们在开发的过程中,往往会根据业务需要在不同的字段上建立索引,这些索引就是二 ...

  4. MySQL聚簇索引和二级索引的区别

    主键索引的叶子节点存的是整行数据.在InnoDB里,主键索引也被称为聚簇索引(clustered index). 非主键索引的叶子节点内容是主键的值.在InnoDB里,非主键索引也被称为二级索引(se ...

  5. MySQL的一级索引和二级索引介绍,HBase中提到的二级索引【笔记自用】

    1.一级索引 索引和数据存储在一起,都存储在同一个B+tree中的叶子节点.一般主键索引都是一级索引. 2.二级索引 二级索引树的叶子节点存储的是主键而不是数据.也就是说,在找到索引后,得到对应的主键 ...

  6. MySQL的一级索引和二级索引

    导读 本文参考自简书的某位作者,并做了增删.我一般称为"一级索引"和"二级索引",这样好记一点.正确的称谓是:集聚索引和非聚集索引.顾名思义,叶子节点存放主索引 ...

  7. MYSQL-主键索引与二级索引

    文章目录 0. 提问 1.主键索引 2.二级索引 3.回表 4.二级索引是不是聚集索引? 5.总结 0. 提问 二级索引是不是聚集索引? 1.主键索引 看图,这是一个主键索引,叶子节点存放了此id下的 ...

  8. mysql聚集索引和二级索引_mysql8 参考手册--聚集索引和二级索引

    每个InnoDB表都有一个特殊的索引,称为聚簇索引 ,用于存储行数据.通常,聚簇索引与主键同义 .为了从查询,插入和其他数据库操作中获得最佳性能,您必须了解如何InnoDB使用聚簇索引为每个表优化最常 ...

  9. mysql二级索引_mysql——二级索引(辅助索引)

    二级索引:叶子节点中存储主键值,每次查找数据时,根据索引找到叶子节点中的主键值,根据主键值再到聚簇索引中得到完整的一行记录. 问题: 1.相比于叶子节点中存储行指针,二级索引存储主键值会占用更多的空间 ...

最新文章

  1. Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控...
  2. nginx mysql设置远程连接超时_docker -mysql服务设置远程连接 解决1251 client does not support ..问题...
  3. springboot中配置了拦截器后,拦截器无效的解决方案之一
  4. 监控工具—Prometheus—安装部署
  5. Lolipa魔方财务主题-虚拟主机源码
  6. python时间转绝对秒数_python时间时分秒与秒数的互相转换
  7. 在线数据分析4大常用功能
  8. 亚马逊选品调研之全球品牌和专利注册查询方法
  9. 百度AI C#客户端车辆检测找不到VehicleDetect解决
  10. 新域名后缀的主要优点是什么?
  11. m1136能支持哪些服务器,实测惠普M1136无线一体机,成就精英效率!
  12. 浏览器 实现复制粘贴 上传图片, js实现粘贴图片预览功能
  13. AndroidKK4.4 Power key电量屏幕时button light先亮LCD后亮的卡顿问题分析
  14. 区块链能够防伪?你彷佛有什么误解!
  15. removeclass 传入两个类_jQuery源码解读之removeClass()方法分析
  16. Adobe系列软件彻底清理方法(手动删除)
  17. 11张网络安全思维导图,快收藏!
  18. android高德地图计算行驶里程,高德地图批量统计驾车轨迹的用时及总里程
  19. 【计算机网络】网线规格的鉴别与接线方法
  20. html下拉复选框联动,HTML : CheckBox 复选框成组联动(JavaScript)

热门文章

  1. sqliteorm的sync_schema介绍
  2. 解决 Idea 卡在 Resolving Maven dependencies ...
  3. Linux 上 安装 nginx、 阿里云服务器上安装 nginx
  4. FreeSql (十五)查询数据
  5. JavaWeb基础—dbutils的简单入门
  6. FetchType与FetchMode的区别
  7. 架​设​W​e​b​服​务​器
  8. php中preg_match用户名正则实例
  9. Vim高级使用 - CentOS下使用VIM打造C/C++开发环境
  10. 五.几何对象和空间参考