MYSQL学习笔记 (六)explain分析查询

使用EXPLAIN可以模拟优化器执行SQL语句,从而知道MYSQL是如何处理你的SQL,从而分析查询语句或者表结构的瓶颈。

通过expain 你可以得到:

1)table :显示这一行的数据是关于哪张表的。

2)type:显示查询使用了何种类型。从最好到最差的连接类型为system、const、eq_reg、ref、range、index和ALL。

3)possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。

4)key:实际使用的索引。如果为NULL,则没有使用索引。MYSQL很少会选择优化不足的索引,此时可以在SELECT语句中使用USE INDEX(index)来强制使用一个索引或者用IGNORE INDEX(index)来强制忽略索引。

5)key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好。

6)ref:显示索引的哪一列被使用了,如果可能的话,是一个常数。

7)rows:MySQL认为必须检索的用来返回请求数据的行数。

8)Extra:

using where ,using index,using filesort,Using index for group-by

时间: 2024-11-11 09:23:07

MYSQL学习笔记 (六)explain分析查询的相关文章

IBatis.Net学习笔记六--再谈查询

在IBatis.Net学习笔记五--常用的查询方式 中我提到了一些IBatis.Net中的查询,特别是配置文件的写法. 后来通过大家的讨论,特别是Anders Cui 的提醒,又发现了其他的多表查询的方式.在上一篇文章中我提到了三种方式,都是各有利弊:第一种方式当数据关联很多的情况下,实体类会很复杂:第二种方式比较灵活,但是不太符合OO的思想(不过,可以适当使用):第三种方式最主要的问题就是性能不太理想,配置比较麻烦. 下面是第四种多表查询的方式,相对第二种多了一点配置,但是其他方面都很好(当然

MySQL学习笔记(六):索引

本文主要介绍MySQL 中关于索引的一些问题,例如:索引的作用:怎么创建索引:设计索引的原则:怎么优化索引等等. 一:索引概述 所有的MySQL列类型都能创建索引,良好设计的所以能够很好地提高查询的性能,但如果索引过多,由于每次更新操作都会对索引进行更新,反而会影响到数据库的整体性能.因而,遵循一定的原则,设计合适的索引是非常重要的. (1):创建索引的语法 CREATE [UNIQUE|FULLTEXT|SPQTIAL] INDEX index_name [USING index_type]

mysql学习笔记——对数据记录查询操作的补充(单表内查询)

select ... from ... where ... group by ... having ... order by ... limit...; (顺序固定) 1.select 指定所要检索的字段(列) select 后加distinct关键字,则可去除重复的记录,其中,重复的记录是指 所有字段值都相同的记录 2.from 指定查询数据表,可以是表名,也可以是别名 通常是在一个表达式不易读取时,对其取别名: 表达式 as 别名; 3.where 前置过滤条件 --- 将表数据过滤掉一部分

Mysql学习笔记(六)增删改查

原文:Mysql学习笔记(六)增删改查 PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into table_name values("要插入的数据"); 比如说,我们先创建一个宠物表,用来记录宠物的基本信息以及所有者... create table pet ( name varchar(20), owner varchar(20), species varchar(20), sex cha

MySql学习笔记(一)之DQL常用查询

MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前,我们先做一些准备工作. 需要安装的软件如下: 1.mysql,版本可以选择5.1或者5.5,安装过程可以参考博客:http://www.cnblogs.com/ixan/p/7341637.html 2.mysql图形化管理软件:Navicate,sqlyog(二选一,推荐使用sqlyog). 本文

MySQL学习笔记-子查询和连接

MySQL学习笔记-子查询和连接 使客户端进入gbk编码方式显示: mysql> SET NAMES gbk; 1.子查询 子查询的定义: 子查询(Subquery)是指出现在其他SQL语句内的SELECT子句. 例如:  SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2); 其中SELECT * FROM t1 称为Outer Query / Outer Statement (外部查询) SELECT col2 FROM t2 , 被称为Su

MySql学习笔记(转载)

/* 启动MySQL */net start mysql /* 连接与断开服务器 */mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */mysqld --skip-grant-tables-- 修改root密码密码加密函数password()update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示哪些线程正在运行SHOW VARIABLES -- /* 数据库操

mysql 学习笔记 第二天

插入表格数据: Insert into table_name set columns_1=value1,columns_2=value2,对于没有赋值的列,将会取默认值,并且这个方法只能一次插入一个数据 利用文本方式插入数据: Load data local infile‘径’into table table_name: Select 的通用形式: Select columns from table or tables where conditions;from一般不能少的,但是当查询的时候没有

MySQL学习笔记之五 有关数据表操作

MySQL在创建表的时候,创建一个.frm文件保存表和列定义.索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD(MYData)扩展名的文件中.   一.用SHOW/ DESCRIBE语句显示数据表的信息 语法: SHOW TABLES [FROM db_name] [LIKE wild] or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild] or SHOW INDEX FROM tbl_name [FROM

Mysql学习笔记(八)索引

原文:Mysql学习笔记(八)索引 PS:把昨天的学习内容补上...发一下昨天学的东西....五月三日...继续学习数据库... 学习内容: 索引.... 索引的优点: 1.通过创建唯一索引,可以保证数据库每行数据的唯一性... 2.使查找的速度明显加快... 3.当使用分组和排序进行查询时,可以缩短时间... 索引的缺点: 1.维护索引需要耗费数据库的资源... 2.索引需要占用磁盘空间... 3.对表进行增删改的时候,由于索引的存在,时间会有所增加... 索引的分类... 普通索引和唯一索引