MySQL的回表查询与索引覆盖查询
MySQL的回表查询与索引覆盖查询
回表查询
名词解释
有图有真相
假设有个T表,如下图所示。id是聚集索引,name则是普通索引。
id | name | sex |
---|---|---|
1 | 小毛 | 男 |
2 | 小高 | 女 |
3 | 大雄 | 男 |
4 | A梦 | 女 |
select name, sex from t where name = 'A梦';
索引覆盖
什么是索引覆盖?
举例
还是以上面那张表与SQL为例子,Id是聚集索引,name是非聚集索引。
如果我们想要避免回表查询有两种方案。
注意事项
-不是所有类型的索引都可以成为覆盖索引的。因为覆盖索引必须要存储索引的列值,而哈希索引、空间索引和全文索引等都不存储索引列值,索引MySQL只能使用B-Tree索引做覆盖索引。
索引覆盖的优点
- 索引条目通常远小于数据行的大小,因为覆盖索引只需要读取索引,极大地减少了数据的访问量。
- 索引是按照列值顺序存储的,对于IO密集的范围查找会比随机从磁盘读取每一行数据的IO小很多。
- 一些存储引擎比如MyISAM在内存中只缓存索引,数据则依赖操作系统来缓存,因此要访问数据的话需要一次系统调用,使用覆盖索引则避免了这一点。
- 由于InnoDB的聚簇索引,覆盖索引对InnoDB引擎下的数据库表特别有用。因为InnoDB的二级索引在叶子节点中保存了行的主键值,如果二级索引能够覆盖查询,就避免了对主键索引的二次查询。
MySQL的回表查询与索引覆盖查询相关推荐
- MySQL-回表查询与索引覆盖
转自:https://www.cnblogs.com/yanggb/p/11252966.html mysql中的回表查询与索引覆盖 了解一下MySQL中的回表查询与索引覆盖. 回表查询 要说回表查询 ...
- mysql 回表查询优化_MySQL中的回表查询与索引覆盖:一次百万级别分页查询使用Limit 从90秒到0.6毫秒的优化...
这里写目录标题 事故现场 解决方案 提到的"回表查询" InnoDB的索引 什么是回表查询 怎么优化回表查询 事故现场 数据库使用的MySQL,有一个日志表,需要进行分页查询,于是 ...
- 【MySQL】回表与覆盖索引
目录 索引分类 聚簇索引 回表 覆盖索引(Cover Index) 索引分类 索引可以按照以下几个角度进行分类: 从数据结构的角度分类 B+tree 索引 Hash 索引 Full-texts索引 从 ...
- 关于mysql数据库回表的粗浅理解
1关于mysql数据库回表 说一下现象 比如有有一张test表,设置id为主键,name为索引 当使用 select id,name,age from test where id=1 查询数据的时候, ...
- mysql回表什么意思_什么是Mysql的回表查询?聊一聊
要说回表查询,先要从InnoDB的索引实现说起.InnoDB有两大类索引,一类是聚集索引(Clustered Index),一类是普通索引(Secondary Index). InnoDB的聚集索引 ...
- 生动的解释下什么是 MySQL 的“回表”?
1. 索引结构 要搞明白这个问题,需要大家首先明白 MySQL 中索引存储的数据结构.这个其实很多小伙伴可能也都听说过,B+Tree 嘛! B+Tree 是什么?那你得先明白什么是 B-Tree,来看 ...
- 什么是MySQL的回表?
文章目录 引言 聚簇索引和非聚簇索引是什么? 主键索引和非主键索引有什么区别? B-Tree 和 B+Tree 的简单理解 如何避免回表? 引言 简单来说,回表就是 MySQL 要先查询到主键索引,然 ...
- MySQL数据库——回表
什么是回表 可以举一个简单的例子,我有一张用于用户登录的user表: 字段名 类型 说明 id bigint(20) 主键ID username varchar(20) 用户名 password va ...
- mysql千万级数据量根据索引优化查询速度
(一)索引的作用 索引通俗来讲就相当于书的目录,当我们根据条件查询的时候,没有索引,便需要全表扫描,数据量少还可以,一旦数据量超过百万甚至千万,一条查询sql执行往往需要几十秒甚至更多,5秒以上就已经 ...
- 【MySQL】单表访问之索引合并
MySQL在一般情况下执行一个查询时最多只会用到单个二级索引,但存在有特殊情况,在这些特殊情况下也可能在一个查询中使用到多个二级索引,MySQL中这种使用到多个索引来完成一次查询的执行方法称之为:索引 ...
最新文章
- 【 C 】关于学习 realloc 踩过的那些坑
- Hasor:生命周期
- MSSql2005: Cube 和 RollUp 的区别
- [MySQL FAQ]系列 -- mysqldump出错一例:打开文件数太多
- boost::hana::metafunction_class用法的测试程序
- 《java基础知识》Java变量作用域
- HDUOJ-----1556Color the ball
- 回首十年——写给还在各等级教育中盲目学习的人
- matlab中函数imhist的用法
- EDIUS 9 PRO(视频编辑软件)
- WebService调用第三方服务(中英文翻译)
- C语言-函数(一):函数的定义和调用
- 阿里巴巴国际站全屏代码装修贸店铺装修平台国际站平台全屏代码装修方法教程视频教程
- postgresql源码学习(38)—— 备份还原② - do_pg_stop_backup函数
- 唐迟长难句逻辑思维导图(含英语高分笔记)
- webGIS学习(二)探究本质,WebGIS前端地图显示之地图比例尺换算原理 发布于 3 年前 作者 lzxue 7473 次浏览 来自 技术 1.没有豆浆机怎么办? 喝豆浆是我们早晨中基本
- DDOS防护如何建设?
- mybatis 多条件查询、in查询
- 中国银联基于软件定义网络的下一代金融云研究探索
- 76、基于STM32的电动车小车蓄电池/锂电池充电桩系统设计
热门文章
- OpenCV :(-5:Bad argument) Matrix operand is an empty matrix. in function ‘checkOperandsExist‘
- 解析极限编程--Kent Beck, Cynthia Andres读后感
- oracle shared_pool_size 0,Oracle 参数shared_pool_size
- freemaker if 多个条件_小函数,大用处!巧用AND函数,避开IF函数嵌套
- 多元梯度下降法(2)--学习率α machine learning
- 中文分词与马尔科夫模型之二(隐马尔科夫模型与维特比)
- 最近写mapreduce程序从hbase中抽取程序遇到的一些问题
- 【UVALive - 6922】Reverse Polish Notation【贪心】
- POJ1015 Jury Compromise【背包问题】
- C#WPF多线程控件访问问题