索引覆盖

  是指 如果查询的列恰好是索引的一部分,那么查询只需要在索引文件上进行,不需要回行到磁盘再找数据.这种查询速度非常快,称为”索引覆盖”,比平时的查询少一次到磁盘读数据的操作。(索引正好覆盖到查询的数据)

例如下面:

mysql> use exam9;
Database changed
mysql> desc options;
+----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| optionId | varchar(40) | NO | PRI | NULL | |
| questionId | varchar(40) | YES | MUL | NULL | |
| optionContent | varchar(2000) | YES | | NULL | |
| optionWithTag | varchar(2000) | YES | | NULL | |
| optionSequence | varchar(2) | YES | | NULL | |
| isAnswer | varchar(2) | YES | | NULL | |
| description | varchar(300) | YES | | NULL | |
+----------------+---------------+------+-----+---------+-------+
7 rows in set (0.00 sec) mysql> reset query cache; #清空缓存
Query OK, 0 rows affected (0.00 sec) mysql> set profiling=on;    #打开profiling功能
Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> select optioncontent from options where optionid='000406aa1b89461d8cfd85f
b0e5d9e01';
+------------------------+
| optioncontent |
+------------------------+
| 基础工程完毕进行回填后 |
+------------------------+
1 row in set (0.03 sec) mysql> select optionid from options where optionid='000406aa1b89461d8cfd85fb0e5d
9e01';
+----------------------------------+
| optionid |
+----------------------------------+
| 000406aa1b89461d8cfd85fb0e5d9e01 |
+----------------------------------+
1 row in set (0.03 sec) mysql> show profiles;  #显示概要信息
+----------+------------+-------------------------------------------------------
------------------------------+
| Query_ID | Duration | Query
|
+----------+------------+-------------------------------------------------------
------------------------------+
| 1 | 0.03480675 | select optioncontent from options where optionid='0004
06aa1b89461d8cfd85fb0e5d9e01' |
| 2 | 0.03624525 | select optionid from options where optionid='000406aa1
b89461d8cfd85fb0e5d9e01' |
+----------+------------+-------------------------------------------------------
------------------------------+
2 rows in set, 1 warning (0.00 sec) mysql> explainselect optionid from options where optionid='000406aa1b89461d8cfd8
5fb0e5d9e01'\G
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'expla
inselect optionid from options where optionid='000406aa1b89461d8cfd85fb0e5d' at
line 1
mysql> explain select optionid from options where optionid='000406aa1b89461d8cfd
85fb0e5d9e01'\G #explain分析语句
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: options
partitions: NULL
type: const
possible_keys: PRIMARY
key: PRIMARY
key_len: 122
ref: const
rows: 1
filtered: 100.00
Extra: Using index  #表示索引覆盖
1 row in set, 1 warning (0.03 sec) mysql> explain select optioncontent from options where optionid='000406aa1b89461
d8cfd85fb0e5d9e01'\G    #分析语句
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: options
partitions: NULL
type: const
possible_keys: PRIMARY
key: PRIMARY
key_len: 122
ref: const
rows: 1
filtered: 100.00
Extra: NULL
1 row in set, 1 warning (0.03 sec)

【Mysql优化】索引覆盖的更多相关文章

  1. MYSQL优化——索引覆盖

    索引覆盖:如果查询的列恰好是索引的一部分,那么查询只需要在索引文件上进行,不需要进行到磁盘中找数据,若果查询得列不是索引的一部分则要到磁盘中找数据. 建表: create table test_ind ...

  2. mysql优化-----索引覆盖

    一道面试题: 有商品表, 有主键,goods_id, 栏目列 cat_id, 价格price 说:在价格列上已经加了索引,但按价格查询还是很慢,问可能是什么原因,怎么解决? 答:在实际场景中,一个电商 ...

  3. mysql优化:覆盖索引(延迟关联)

    前言 上周新系统改版上线,上线第二天就出现了较多的线上慢sql查询,紧接着dba 给出了定位及解决方案,这里较多的是使用延迟关联去优化. 而我对于这个延迟关联也是第一次听说(o(╥﹏╥)o),所以今天 ...

  4. Mysql优化-索引

    1. 索引的本质 MySQL官方对索引的定义为:索引是帮助MySQL高效获取数据的数据结构. 数据库查询是数据库的最主要功能之一.我们都希望查询数据的速度尽可能的快,因此 数据库系统的设计者会从查询算 ...

  5. MySQL优化索引

    1.  MySQL如何使用索引 索引用于快速查找具有特定列值的行.如果没有索引,MySQL必须从第一行开始,然后遍历整个表以找到相关的行.表越大,花费越多.如果表中有相关列的索引,MySQL可以快速确 ...

  6. MySQL优化 - 索引优化

    索引(在MySQL中也叫做"键(key)")是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键,尤其是当表的数据量越来越大时,索引对性能(查询)的影响愈发重要. ...

  7. 5.MySQL优化---索引优化专题

    来自互联网,整理转载. 摘要:多关于索引,分为以下几点来讲解: 一.索引的概述(什么是索引,索引的优缺点) 二.索引的基本使用(创建索引) 三.索引的基本原理(面试重点) 四.索引的数据结构(B树,h ...

  8. mysql 优化(索引)

    表 collect   字段  id(int  自增),title(varchar),info(text),vtype(int) 表中数据130w: select * from collect whe ...

  9. MySQL优化——索引

    内容来自:https://yq.aliyun.com/articles/214494?utm_content=m_31338 对此我们来详细分析下(也就是大家在面试时需要说的): 场景一,数据表规模不 ...

  10. MySQL数据库索引:索引介绍和使用原则

    本篇目录: 一.数据页与索引页 二.聚簇索引与非聚簇索引 三.唯一索引 四.索引的创建 五.索引的使用规则 六.数据库索引失效情况 本篇正文: 一.数据页与索引页 数据库的表存储分为数据页存储和索引页 ...

随机推荐

  1. Expected Conditions的常用函数

    Expected Conditions的使用场景有两种  1.直接在断言中使用  2.与WebDriverWait配合使用,动态等待页面上元素出现或者消失 1. title_is: 判断当前页面的ti ...

  2. Firefox火狐浏览器 修改默认搜索引擎

    如图:

  3. WebKit 源码分析 -- loader

    原文地址: http://peirenlei.iteye.com/blog/1718569 摘要:本文介绍 WebCore 中 Loader 模块是如何加载资源的,分主资源和派生资源分析 loader ...

  4. SpringBoot2.0(一) mybatis

    使用mybatis springboot使用mybatis主要依赖 mybatis-spring-boot-starter 来实现.其提供了2中解决方案,一种是使用注解:另一种是简化后的传统的xml方 ...

  5. BZOJ 2337 XOR和路径(概率DP)

    求点1到点n经过的路径权值异或和的期望. 考虑按位计算,对于每一位来说,令dp[i]表示从i到n的异或和期望值. 那么dp[i]=sum(dp[j]+1-dp[k]).如果w(i,j)这一位为0,如果 ...

  6. FZU 1492 地震预测(链表)

    实际上把数组排序一遍加入链表中,再记录好数组原来的数在链表中的位置.我们只需要维护链表的删除操作就可以了. # include <cstdio> # include <cstring ...

  7. Go语言【第四篇】:Go运算符

    Go语言运算符 运算符用于在程序运行时执行数据或逻辑运算,Go语言内置的运算符有: 算数运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 算数运算符 下表列出了所有Go语言的算数运算符 ...

  8. Python正则表达式re模块

    re.compile(pattern,flags=0)将正则表达式编译成正则表达式对象.可以使用match()和search()方法进行匹配.对于常用的表达式可以先进行编译,后续可多次使用以提高效率. ...

  9. [luogu1654]OSU!

    update 9.20:本篇题解已经被\(yyb\)证明是出锅的 这道题目最后的式子看上去是很简单的,不到10行就码完了,但是求式子的过程并没有那么简单. 很容易想到一种枚举思路: 因为每一段连续的1 ...

  10. [洛谷P2057][SHOI2007]善意的投票

    题目大意:有$n(n\leqslant300)$个人,每个人可以选择$0$或$1$,每个人最开始有意愿,有$m(m\leqslant\dfrac{n(n-1)}2)$对好朋友.定义一次的冲突数为好朋友 ...