延迟关联:通过使用覆盖索引查询返回需要的主键,再根据主键关联原表获得需要的数据。

为什innodb的索引叶子节点存的是主键,而不是像myisam一样存数据的物理地址指针?

如果存的是物理地址指针不就不需要二次查找了吗,根据myisam和innodb数据存储方式的差异去想

Imyisam索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。

而在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。

这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。

innodb为了避免二次查找可以使用索引覆盖技术,无法使用索引覆盖的,就使用基于索引覆盖实现延迟关联;

一般查询:

order by col limit N,OFFSET M, MySQL 执行此类sql时需要先扫描到N行

select goods_id,name from sm_goods_all order by goods_id limit 1000000, 10

10 rows retrieved starting from 1 in 3s 611ms (execution: 3s 603ms, fetching: 8ms)

延迟关联查询:

select g1.goods_id, g1.name fromsm_goods_all g1, (SELECT goods_id FROM sm_goods_all ORDER BY goods_id LIMIT 1000000, 10) g2where g1.goods_id=g2.goods_id

10 rows retrieved starting from 1 in 246ms (execution: 236ms, fetching: 10ms)

select goods_id,name fromsm_goods_allwhere goods_id >= (select goods_id from sm_goods_all order by goods_id asc limit 1000000,1)

limit10

10 rows retrieved starting from 1 in 246ms (execution: 234ms, fetching: 12ms)

数据量大的情况下,延迟关联比一般查询快了10陪

参考:

mysql innodb 索引 延迟更新_Mysql覆盖索引与延迟关联相关推荐

  1. mysql 覆盖索引 简书_mysql覆盖索引与回表

    select id,name where name='shenjian' select id,name,sex* where name='shenjian'* 多查询了一个属性,为何检索过程完全不同? ...

  2. 聚集索引、辅助索引、覆盖索引、联合索引

    转载自   聚集索引.辅助索引.覆盖索引.联合索引 聚集索引(Clustered Index) 聚集索引就是按照每张表的主键构造一棵B+树,同时叶子节点中存放的即为整张表的行记录数据. 举个例子,直观 ...

  3. 覆盖索引与联合索引_什么是覆盖索引?

    前言 要搞明白覆盖索引首先就得明白主键索引和辅助索引的区别,以及查询时引擎的工作方式. 当然,以上都是基于innoDB引擎来说. 主键索引与辅助索引的区别 相信大家也了解过这方面的知识,这里就不展开了 ...

  4. mysql延迟关联为什么快_MySQL 覆盖索引与延迟关联详解

    本期来谈谈覆盖索引与延迟关联.在此之前,我们先简单建立一个订单表 Orders 用于举例说明.表中共包含 3 个字段: id int product_id name CREATE TABLE `ord ...

  5. mysql 创建覆盖索引_MySql覆盖索引

    mysql的innodb引擎通过搜索树方式实现索引,索引类型分为主键索引和二级索引(非主键索引),主键索引树中,叶子结点保存着主键即对应行的全部数据:而二级索引树中,叶子结点保存着索引值和主键值,当使 ...

  6. mysql 创建覆盖索引_Mysql覆盖索引 covering index 或者 index coverage

    组合索引 提到组合索引,大家都知道"最左前缀"原则.例如,创建索引 idx_name_age (name,age) ,通常情况下,where age=50 或者 where age ...

  7. mysql 索引与约束_MySQL之索引与约束条件

    字段约束 作用 顾名思义就是给字段加以限制 其保证数据库的完整性与一致性 通过约束条件防止数据库产生一些不必要的数据 保证数据库的正确性 相容性 安全性 null和not null mysql> ...

  8. mysql like 多个条件_MySQL高性能索引策略

    索引类型 从物理存储角度: 聚集索引 InnoDB 叶节点包含了完整的数据记录.这种索引叫做聚集索引.因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有 ...

  9. mysql索引优化原则:覆盖索引、最左前缀原则、索引下推

    文章目录 前言 round1:覆盖索引 round2:最左前缀原则 round3:索引下推 小结 前言 在文章开始前,小编提出几个问题,读者可以思考一下如何回答.如果对于以下的问题,回答的模棱两可甚至 ...

最新文章

  1. SAP RETAIL WRMO 补货监控
  2. 会声会影X4 初学者速成 转
  3. jQuery——给元素添加父级的方法
  4. J2Pay –完整示例
  5. 何时才使用https访问项目
  6. matlab中rms代表什么_电气施工图纸中BV、ZRBLV和TC、SC符号代表什么?
  7. Client访问Tomcat简单流程(Struts2)
  8. 搭建dubbo客户端
  9. 日志打印longging模块(控制台和文件同时输出)
  10. sd卡的速度怎么测试软件,【有图】怎么测SD卡的速度-蜂鸟网
  11. 2021年web前端开发视频教程零基础自学HTML/VUE/JS全栈项目实战全套课程
  12. 2.6一个小工具的使用snipaste
  13. live2d web笔记之一:官方SDK尝试
  14. word交叉引用标题序号 编号变化问题
  15. O2O商城网站建设方案
  16. tp3.2简单的图片上传实现
  17. c语言调用函数的方法案例,C语言经典例题100例——C语言练习实例34解答(函数调用)...
  18. 使用apache log解决高并发下log4j引起大量线程block问题
  19. ios input不能唤醒_如何使iOS的“唤醒唤醒”每次都能正常工作
  20. 关于vue3中无config文件

热门文章

  1. 又一起.NET程序挂死, 用 Windbg 抽丝剥茧式的真实案例分析
  2. 整合.NET WebAPI和 Vuejs——在.NET单体应用中使用 Vuejs 和 ElementUI
  3. Java面试必问JVM调优,那.NET5呢?
  4. 再分享 5 个 vs 调试技巧
  5. 我又踩坑了!如何为HttpClient请求设置Content-Type标头?
  6. BeetleX框架详解-小结
  7. 深入探究.Net Core Configuration读取配置的优先级
  8. asp.net core程序在k8s中基于rabbitmq队列消息数的HPA实践!
  9. 开发大会上,前微软CEO放出的狠话!.NET开发随时起飞,你准备好了吗?
  10. 红帽借“订阅”模式成开源一哥,首创者升任总裁