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相关推荐

  1. Mysql Type中的all和index区别?

    all 这便是所谓的"全表扫描",如果是展示一个数据表中的全部数据项,倒是觉得也没什么,如果是在一个查找数据项的sql中出现了all类型,那通常意味着你的sql语句处于一种最原生的 ...

  2. mysql数据库中key 、primary key 、unique key 与index区别

    所有的MySQL索引(PRIMARY.UNIQUE和INDEX)在B树中存储.字符串是自动地压缩前缀和结尾空间. 下面是建表的语句: CREATE TABLE `phpcolor_ad` ( `id` ...

  3. MySQL create table语法中的key与index的区别

    在create table的语句中,key和index混淆在一起,官方手册中的解释是这样: KEY is normally a synonym for INDEX. The key attribute ...

  4. Mysql 事务中Update 会锁表吗?

    Mysql 事务中Update 会锁表吗? 两种情况: 1.带索引 2.不带索引 前提介绍: 方式:采用命令行的方式来模拟 1.mysq由于默认是开启自动提交事务,所以首先得查看自己当前的数据库是否开 ...

  5. 查看MYSQL数据库中所有用户及拥有权限

    查看MYSQL数据库中所有用户 mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM m ...

  6. mysql temporary_MySQL中的两种临时表

    http://mysql.taobao.org/monthly/2016/06/07/ 外部临时表 通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表.这种临时表 ...

  7. mysql数据库搜索字符_在MySQL数据库中快速搜索字符串?

    使用FULLTEXT搜索来快速搜索字符串.让我们首先创建一个表-mysql> create table DemoTable1554 -> ( -> Title text ->  ...

  8. 1亿条数据如何分表100张到Mysql数据库中(PHP)

    来源:http://www.jb51.net/article/70265.htm 这篇文章主要介绍了当数据量猛增的时候如何把一亿条数据分表100张到Mysql数据库中,需要的朋友可以参考下 下面通过创 ...

  9. fatjar打包mysql_一个简单的解压ZIP Excl文件---gt;按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中。 - 明月 - ITeye博客...

    写道 一个简单的解压ZIP Excl文件--->按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中. package common.gaoyang; impo ...

最新文章

  1. ca证书 linux 导入_CA搭建与证书申请
  2. [转]div里table居中的问题 Div与body顶部间隙
  3. lhgdialog 4.2.0 正式版发布
  4. 隐函数画图with R
  5. UML模型中的图-行为图【状态图、活动图】
  6. 大数据之-Hadoop本地模式_WordCount官方案例---大数据之hadoop工作笔记0022
  7. poj 1753 Flip Game 高斯消元 异或方程组 求最值
  8. Java一亿电话号码去重_如何在有限的内存限制下实现数十亿级手机号码去重
  9. form表单提交serialize()方法和
  10. 情人节满屏爱心HTML5特效(表白源码html+css)
  11. CSS 实现三级导航目录
  12. [CF296D] Greg and Graph [floyd]
  13. 交换技术三种重要的交换
  14. 计算机专业综合改革举措,数学与应用数学专业综合改革的举措.docx
  15. 错过直播不用急,回顾小视科技工业级静默活体检测算法解读,视频已备好
  16. PowerShell获取货币符号
  17. 地图定位技术揭秘(一)
  18. 【2022秋招】IC设计/FPGA开发秋招经历总结
  19. python判断正数和负数教案_最新正数和负数教案
  20. vivotek栈溢出漏洞复现

热门文章

  1. 《约伯记》注释正文 第十三章
  2. js 将秒数换算成时分秒
  3. dbca 命令行静默方式创建Oracle RAC
  4. 星环科技的“星图解密”:只有偏执狂,才能让中国基础软件打破对国外进口的依赖...
  5. 数字信号内插方法的python实现
  6. luooj1559最强阵容加强版
  7. OPA1612AIDR IC AUDIO 2 CIRCUIT 8SOIC
  8. android 拔插键盘自动切换输入法
  9. 虚幻引擎(3)-第三人称视角
  10. opengl: 太阳地球和月亮