mysql useing_mysql中using where,using index
Using where:过滤元素;
执行 explain SELECT * from test where b = '4' (b不是索引,全表扫描后,通过过滤获取所需数据)
执行 explain SELECT * from test where c = '4' (c是索引,通过索引定位到所需数据,不需过滤)
Using index:查询使用索引就能直接访问索引文件获取到所需要的数据;
执行 explain SELECT c from test where c = '4' (c是索引)
Using index condition:查询使用索引,但要访问数据文件(表数据)才能获取所需要的数据;
using firesort : order by时,在索引加得不当的情况下,都有可能出现Using filesort,这时候就要对SQL语句和索引进行优化了(个人理解:排序字段不是索引或排序字段是索引但没有用到就会出现using filesort)
using jion buffer(block nested loop):
示例表
CREATE TABLE `test` (
`a` varchar(20) NOT NULL,
`b` varchar(20) DEFAULT NULL,
`c` varchar(20) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `prov` (
`id` varchar(32) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`height` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
执行
SELECT * FROM test t INNER JOIN prov v on t.c = v.id where v.id
说明:
从执行计划中看出v是基表,在查询中使用到了主键v.id,Extra是using where(因为过滤条件v.id
执行 ALTER table test add index inx_c(c) ,给t.c加索引,执行计划如下:
Extra是using index condition, 因为select * 是要读到表数据,但是使用了索引
执行 SELECT c from test where c = '5';
Extra是using index , 因为select c 查找时使用了索引,只从索引中就可得到数据,不用访问表数据
执行 SELECT * FROM test t INNER JOIN prov v on t.a = v.id where v.id
t表中row=1,因为t.a是主键,所以基表v的每条符合要求记录 与t表关联查询时是通过索引直接定位到符合要求的数据。
参考:http://blog.sina.com.cn/s/blog_5037eacb0102vkcp.html
mysql useing_mysql中using where,using index相关推荐
- Mysql Type中的all和index区别?
all 这便是所谓的"全表扫描",如果是展示一个数据表中的全部数据项,倒是觉得也没什么,如果是在一个查找数据项的sql中出现了all类型,那通常意味着你的sql语句处于一种最原生的 ...
- mysql数据库中key 、primary key 、unique key 与index区别
所有的MySQL索引(PRIMARY.UNIQUE和INDEX)在B树中存储.字符串是自动地压缩前缀和结尾空间. 下面是建表的语句: CREATE TABLE `phpcolor_ad` ( `id` ...
- MySQL create table语法中的key与index的区别
在create table的语句中,key和index混淆在一起,官方手册中的解释是这样: KEY is normally a synonym for INDEX. The key attribute ...
- Mysql 事务中Update 会锁表吗?
Mysql 事务中Update 会锁表吗? 两种情况: 1.带索引 2.不带索引 前提介绍: 方式:采用命令行的方式来模拟 1.mysq由于默认是开启自动提交事务,所以首先得查看自己当前的数据库是否开 ...
- 查看MYSQL数据库中所有用户及拥有权限
查看MYSQL数据库中所有用户 mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM m ...
- mysql temporary_MySQL中的两种临时表
http://mysql.taobao.org/monthly/2016/06/07/ 外部临时表 通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表.这种临时表 ...
- mysql数据库搜索字符_在MySQL数据库中快速搜索字符串?
使用FULLTEXT搜索来快速搜索字符串.让我们首先创建一个表-mysql> create table DemoTable1554 -> ( -> Title text -> ...
- 1亿条数据如何分表100张到Mysql数据库中(PHP)
来源:http://www.jb51.net/article/70265.htm 这篇文章主要介绍了当数据量猛增的时候如何把一亿条数据分表100张到Mysql数据库中,需要的朋友可以参考下 下面通过创 ...
- fatjar打包mysql_一个简单的解压ZIP Excl文件---gt;按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中。 - 明月 - ITeye博客...
写道 一个简单的解压ZIP Excl文件--->按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中. package common.gaoyang; impo ...
最新文章
- ca证书 linux 导入_CA搭建与证书申请
- [转]div里table居中的问题 Div与body顶部间隙
- lhgdialog 4.2.0 正式版发布
- 隐函数画图with R
- UML模型中的图-行为图【状态图、活动图】
- 大数据之-Hadoop本地模式_WordCount官方案例---大数据之hadoop工作笔记0022
- poj 1753 Flip Game 高斯消元 异或方程组 求最值
- Java一亿电话号码去重_如何在有限的内存限制下实现数十亿级手机号码去重
- form表单提交serialize()方法和
- 情人节满屏爱心HTML5特效(表白源码html+css)
- CSS 实现三级导航目录
- [CF296D] Greg and Graph [floyd]
- 交换技术三种重要的交换
- 计算机专业综合改革举措,数学与应用数学专业综合改革的举措.docx
- 错过直播不用急,回顾小视科技工业级静默活体检测算法解读,视频已备好
- PowerShell获取货币符号
- 地图定位技术揭秘(一)
- 【2022秋招】IC设计/FPGA开发秋招经历总结
- python判断正数和负数教案_最新正数和负数教案
- vivotek栈溢出漏洞复现