索引覆盖

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

例如下面:

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. djano modles values+ajax实现无页面刷新更新数据

    做项目的过程中想通过不刷新页面的方式来进行页面数据刷新,开始使用http://www.cnblogs.com/ianduin/p/7761400.html方式将查询结果数据进行序列化.发现可以行,但是 ...

  2. 第54天:原生js实现轮播图效果

    一.轮播图的原理: 一系列的大小相等的图片平铺,利用CSS布局只显示一张图片,其余隐藏.通过计算偏移量利用定时器实现自动播放,或通过手动点击事件切换图片. 二.Html布局 首先父容器containe ...

  3. 【Python】python文件名和文件路径操作

    Readme: 在日常工作中,我们常常涉及到有关文件名和文件路径的操作,在python里的os标准模块为我们提供了文件操作的各类函数,本文将分别介绍“获得当前路径”“获得当前路径下的所有文件和文件夹, ...

  4. MATLAB strcmp

    比较两个输入字符串是否相等 c = strcmp(str1,str2)比较字符串 str1 与 str2 ,若完全相等则返回 1 ,不相等返回 0 str1 = 'hello'; str2 = 'he ...

  5. 【刷题】HDU 4405 Aeroplane chess

    Problem Description Hzz loves aeroplane chess very much. The chess map contains N+1 grids labeled fr ...

  6. [BZOJ2961] 共点圆 [cdq分治+凸包]

    题面 BZOJ传送门 思路 首先考虑一个点$(x_0,y_0)$什么时候在一个圆$(x_1,y_1,\sqrt{x_1^2+y_1^2})$内 显然有:$x_1^2+y_1^2\geq (x_0-x_ ...

  7. BZOJ1149:[CTSC/APIO2007]风铃——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=1149 https://www.luogu.org/problemnew/show/P3621 sb ...

  8. 【BZOJ 4555】[Tjoi2016&Heoi2016]求和 多项式求逆/NTT+第二类斯特林数

    出处0.0用到第二类斯特林数的性质,做法好像很多,我打的是直接ntt,由第二类斯特林数的容斥公式可以推出,我们可以对于每一个i,来一次ntt求出他与所有j组成的第二类斯特林数的值,这个时候我们是O(n ...

  9. HDU 5249 离线树状数组求第k大+离散化

    KPI Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  10. su对环境变量做了什么

    服务器是ubuntu12.04 用一个账户app,使用su - app得到的环境变量和直接ssh登录的环境变量不同. 导致su - app,无法执行ifconfig su - app 的环境变量 /u ...