MySQLexplain bitsCN.comMySQL查询语句执行过程及性能优化-基本概念和EXPLAIN语句简介 网站或服务的性能关键点很大程度在于数据库的设计(假设你选择了合适的语言开发框架)以及如何查询数据上。我们知道MySQL的性能优化方法,一般有建立索引、规避复杂联合查询、设置冗余字段、建立中间表、查询缓存等,也知道用EXPLAIN来查看执行计划。但对MySQL复杂查询语句执行过程和内部机制,MySQL Optimizer本身所做优化以及查询语句调整对性...
MySQLexplain bitsCN.com 最近慢慢接触MySQL,了解如何优化它也迫在眉睫了,话说工欲善其事,必先利其器。最近我就打算了解下几个优化MySQL中经常用到的工具。今天就简单介绍下EXPLAIN。环境准备MySQL版本:创建测试表CREATE TABLE people( id bigint auto_increment primary key, zipcode char(32) not null default , address varchar(128) not null default , lastname char(64) not null default , firstname c...
MySQLexplain bitsCN.com explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了:如: explain select surname,first_name form a,b where a.id=b.id EXPLAIN列的解释:table:显示这一行的数据是关于哪张表的type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和A...
MySQLexplain bitsCN.com 在分析查询性能时,考虑EXPLAIN关键字同样很管用。EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作、以及MySQL成功返回结果集需要执行的行数。explain 可以帮助我们分析 select 语句,让我们知道查询效率低下的原因,从而改进我们查询,让查询优化器能够更好的工作。一、MySQL 查询优化器是如何工作的MySQL 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用...
bitsCN.com 不同的SQL语句写法,往往会带来很大的性能差异,我们怎么才能知道执行SQL查询开销呢?MySQL为我们提供了EXPLAIN关键词,在你的select语句前加上EXPLAIN关键词,MySQL将解释它是如何处理的SELECT查询,提供有关表如何联接和联接的次序,所扫描的记录数等相关信息,你可以凭借这些信息,来优化你的SQL查询。EXPLAIN select id, username from userinfo where username like %peng%;我们在查询语句前加上了EXPLAIN关键词,...
MySQLexplain bitsCN.com 对mysql explain讲的比较清楚的在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快。如果由于不恰当使用索引而引起一些问题的话,可以运行 analyze table来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择。explain 返回了一行记录,它包括了 select语句中用到的各个表的信息。这些表在结果中按照mysql即将执行的查询中读取的顺序列出...
MySQLexplain bitsCN.com 语法格式如下 EXPLAIN tbl_name 或者: EXPLAIN SELECT select_options EXPLAIN 语句可以被当作 DESCRIBE 的同义词来用,也可以用来获取一个MySQL要执行的 SELECT 语句的相关信息。 EXPLAIN tbl_name 语法和 DESCRIBE tbl_name 或 SHOW COLUMNS FROM tbl_name 一样。 当在一个 SELECT 语句前使用关键字 EXPLAIN 时,MYSQL会解释了即将如何运行该 SELECT 语句,它显示了表如何连接、连接的顺序等信息。 以下...
MySQLexplain bitsCN.com 1.使用explain语句去查看分析结果 如explain select * from test1 where id=1;会出现:id selecttype table type possible_keys key key_len ref rows extra各列。 其中, type=const表示通过索引一次就找到了; key=primary的话,表示使用了主键; type=all,表示为全表扫描; key=null表示没用到索引。type=ref,因为这时认为是多个匹配行,在联合查询中,一般为REF。 2.MYSQL中的组合索引 假设表有id,key...
MySQLexplain explain 可以分析 select 语句的执行,即 MySQL 的"执行计划。type 列MySQL 在表里找到所需行的方式。包括(由左至右,由最差到最好): | All | index | range | ref | eq_ref | const,system | null |ALL 全表扫描,MySQL 从头到尾扫描整张表查找行。 mysql> explain select * from a\G …type: ALL如果加上 limit 如 select * from a limit 100 MySQL 会扫描 100 行,但扫描方式不会变,还是从头到尾扫描。index 按...
MySQLexplain bitsCN.comEXPLAIN列的解释:table:显示这一行的数据是关于哪张表的type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALLpossible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句key: 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下...
MySQLexplain 一.语法EXPLAIN select sid,filename,filetype from (SELECT * from by_disk_file where uid=830814) a结果:id:SQL执行顺序标示,SQL是从大到小执行的select_type:为查询类型,有以下几种:1.SIMPLE简单SELECT(不使用UNION或子查询等)例如:explain SELECT * from by_disk_file where uid=8308142.PRIMARY最外层的查询操作例如:explain select * from (SELECT * from by_disk_file where uid=830814 )3.UNIONUNION中...
MySQLexplain 1.Explain语法EXPLAIN SELECT ……变体: EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句2.执行计划分析和实例创建员工表Employeecreate table Employee( ID int auto_increment, Ename varchar(32), Age int, Salary float, MID int, Primary key (ID));创建经理表Managercreate table Manager(MID int,Name varchar(32),Primary key(MID...
explain详细说明通过explain可以知道mysql是如何处理语句,分析出查询或是表结构的性能瓶颈。通过expalin可以得到:1. 表的读取顺序2.表的读取操作的操作类型3.哪些索引可以使用4. 哪些索引被实际使用5.表之间的引用6.每张表有多少行被优化器查询explain显示字段1. id :语句的执行顺序标识2. select_type:使用的查询类型,主要有以下几种查询类型:1).simple 简单类型语句中没有子查询或union2). primary 最外层的select ,不是...
MySQLexplain 一、MySQL 查询优化器是如何工作的 MySQL 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。最终目标是提交 SELECT 语句查找数据行,而不是排除数据行。优化器试图排除数据行的原因在于它排除数据行的速度越快,那么找到与条件匹配的数据行也就越快。如果能够首先进行最严格的测试,查询就可以执行地更快。 EXPLAIN 的每个输出行提供一...
MySQLexplain mysql explain 通过explain sql语句,以帮助选择更好的索引和写出更优化的查询语句。 当然了,如果用like %username% 是不会使用索引的,只有使用 like username%才会使用索引,当然了对普通的 <,<=,=,>,>=,BETWEEN,IN是使用索引的 explain显示了mysql如何使用索引来处理select语句以及连接表,在select语句前加上explain就可以了: 如:explain select surname form user,company where user.id=company.id ...