当前位置: 首页 > news >正文

回表, 覆盖索引,索引下推简述

首先在innodb引擎下,下图表示主键索引(聚集索引)以及二级索引(非聚集索引)。

主键索引,只会在叶子节点上存储索引列以及所有的数据记录,而非主键索引,只会在叶子节点上存储索引列以及主键的值。

假如做查询select * from where age=18。name 和 age 列 上别有一个 单列索引。

  • 回表查询

会首先在二级索引上每 查到一条符合条件 age > 18 的记录时,就到主键索引上,查询这条记录其他列的数据。即所谓的一次回表查询。直到获取所有结果,这种方式对于上面的 SQL 整个执行过程,扫描了 16 条记录,回表 8 次。

  • 索引下推

“索引下推”是数据库查询优化中的一种技术,全称是 Index Condition Pushdown(ICP)。它的作用是让数据库在使用索引查找数据时,尽量在索引层面就完成更多的过滤工作,从而减少访问主表(也叫“回表”)的次数,提高查询效率。

  1. 适用条件
  • 使用 复合索引 时最有效;

  • 条件中的列必须在 索引中出现

  • 查询条件不能涉及函数或复杂表达式(否则不能下推);

  • MySQL 5.6 及以上版本默认开启了 ICP。

3. 查看是否使用了 ICP

        使用 EXPLAIN 查看查询计划,关注 Extra 字段,如果看到 Using index condition,就说明用了索引下推。索引下推就是让数据库尽量在“查索引”的时候就过滤掉不需要的行,减少回表次数,提升效率。

  • 索引覆盖

        “索引覆盖”也叫 覆盖索引,英文是 Covering Index,是数据库优化中另一个非常重要的概念。它的核心思想是。查询的数据全部都能从索引中获取,根本不需要回表去主表查。怎么判断是否用了覆盖索引?

使用 EXPLAIN,看 Extra 字段:

  • 如果显示 Using index,而不是 Using whereUsing index condition,说明这个查询是覆盖索引查询

相关文章:

  • 混凝土强度预测工程实践
  • ASRank: Zero-Shot Re-Ranking with Answer Scent for DocumentRetrieval
  • 蓝桥杯_LITS游戏 俄罗斯方块 模拟 暴力 搜索 DFS 剪纸 枚举
  • TRPO和PPO算法详解
  • C++单例模式
  • 让ChatGPT用DeepReaserch指导进行学术写作
  • vue猜词游戏
  • 进程内存分布--之理论知识
  • 中钧科技通过数字赋能,编织“数字互联网”助力数字化进程!
  • SSM整合实战
  • 手搓多模态-03 顶层和嵌入层的搭建
  • 玄机-应急响应-入侵排查
  • 图解AUTOSAR_SWS_FlexRayARTransportLayer
  • 性能问题排查工具介绍
  • 移动应用开发实验室2024二面纳新题复盘
  • 【家政平台开发(20)】系统监控与日志管理设计:稳固运行的基石
  • 【内网安全】DHCP 饿死攻击和防护
  • [特殊字符] 驱动开发硬核特训 · Day 4
  • Vue3响应式引擎解密:从依赖追踪到性能调优的深度之旅
  • 微服务系统记录
  • 哈尔滨网站优化对策/近两年成功的网络营销案例
  • 自己做的工艺品在哪个网站上可以卖/店铺seo是什么意思
  • web前端毕业设计论文/seo关键词挖掘
  • 网站上seo怎么做/论坛软文案例
  • 北京h5网页设计/合肥百度推广优化
  • 自己免费怎么做网站/网站设计公司哪家专业