【Mysql优化】索引覆盖
索引覆盖
是指 如果查询的列恰好是索引的一部分,那么查询只需要在索引文件上进行,不需要回行到磁盘再找数据.这种查询速度非常快,称为”索引覆盖”,比平时的查询少一次到磁盘读数据的操作。(索引正好覆盖到查询的数据)
例如下面:
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优化】索引覆盖的更多相关文章
- MYSQL优化——索引覆盖
索引覆盖:如果查询的列恰好是索引的一部分,那么查询只需要在索引文件上进行,不需要进行到磁盘中找数据,若果查询得列不是索引的一部分则要到磁盘中找数据. 建表: create table test_ind ...
- mysql优化-----索引覆盖
一道面试题: 有商品表, 有主键,goods_id, 栏目列 cat_id, 价格price 说:在价格列上已经加了索引,但按价格查询还是很慢,问可能是什么原因,怎么解决? 答:在实际场景中,一个电商 ...
- mysql优化:覆盖索引(延迟关联)
前言 上周新系统改版上线,上线第二天就出现了较多的线上慢sql查询,紧接着dba 给出了定位及解决方案,这里较多的是使用延迟关联去优化. 而我对于这个延迟关联也是第一次听说(o(╥﹏╥)o),所以今天 ...
- Mysql优化-索引
1. 索引的本质 MySQL官方对索引的定义为:索引是帮助MySQL高效获取数据的数据结构. 数据库查询是数据库的最主要功能之一.我们都希望查询数据的速度尽可能的快,因此 数据库系统的设计者会从查询算 ...
- MySQL优化索引
1. MySQL如何使用索引 索引用于快速查找具有特定列值的行.如果没有索引,MySQL必须从第一行开始,然后遍历整个表以找到相关的行.表越大,花费越多.如果表中有相关列的索引,MySQL可以快速确 ...
- MySQL优化 - 索引优化
索引(在MySQL中也叫做"键(key)")是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键,尤其是当表的数据量越来越大时,索引对性能(查询)的影响愈发重要. ...
- 5.MySQL优化---索引优化专题
来自互联网,整理转载. 摘要:多关于索引,分为以下几点来讲解: 一.索引的概述(什么是索引,索引的优缺点) 二.索引的基本使用(创建索引) 三.索引的基本原理(面试重点) 四.索引的数据结构(B树,h ...
- mysql 优化(索引)
表 collect 字段 id(int 自增),title(varchar),info(text),vtype(int) 表中数据130w: select * from collect whe ...
- MySQL优化——索引
内容来自:https://yq.aliyun.com/articles/214494?utm_content=m_31338 对此我们来详细分析下(也就是大家在面试时需要说的): 场景一,数据表规模不 ...
- MySQL数据库索引:索引介绍和使用原则
本篇目录: 一.数据页与索引页 二.聚簇索引与非聚簇索引 三.唯一索引 四.索引的创建 五.索引的使用规则 六.数据库索引失效情况 本篇正文: 一.数据页与索引页 数据库的表存储分为数据页存储和索引页 ...
随机推荐
- [剑指Offer] 60.把二叉树打印成多行
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. [思路]使用队列实现二叉树的层次遍历. /* struct TreeNode { int val; struct TreeN ...
- [OS] 线程相关知识点
操作系统中引入进程的目的,是为了描述和实现多个程序的并发执行,以改善资源利用率以及提高系统吞吐量.那为什么还需要引入线程呢?下面我们先来回顾一下什么是进程: 进程有两个基本属性:·资源的拥有者:给每个 ...
- 【bzoj5108】[CodePlus2017]可做题 拆位+乱搞
题目描述 给出一个长度为 $m$ 的序列 $a$ ,编号为 $a_1\sim a_m$,其中 $n$ 个位置的数已经确定,剩下的位置的数可以任意指定.现在令 $b$ 表示 $a$ 的前缀异或和,求 $ ...
- 新浪云部署java web程序 注意事项
在新浪云新手指南里有部署java的示例,但是对一个新手来说难免会有一些地方犯错,折腾了好长时间才把自己的java web部署到了新浪云.这里主要写一些我遇到的问题与第一次使用新浪云的朋友分享一下. 首 ...
- Trie字典树的学习及理解
字典树详解见此 我这里学习时主要是看了李煜东的进阶指南里的讲解,以下是书中介绍的内容. Trie,又称字典树,是一种用于实现字符串快速检索的多叉树结构,Tire的每个节点都拥有若干个字符指针,若在插入 ...
- BZOJ1149:[CTSC/APIO2007]风铃——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1149 https://www.luogu.org/problemnew/show/P3621 sb ...
- X day3
题目 官方题解 T1: 一道水题 #include<iostream> #include<cstring> #include<cstdio> #include< ...
- C++语言中数组指针和指针数组彻底分析
################################# ## 基本知识 ## ...
- poj2060——Taxi Cab Scheme(最小路径覆盖)
Description Running a taxi station is not all that simple. Apart from the obvious demand for a centr ...
- java web中resources路径
UserBean.class.getClassLoader().getResource(filePath).getPath() 或者 Thread.currentThread().getContext ...