`

MySQL的查询分析工具

阅读更多

MySQL的查询分析工具

mysql> explain SELECT_SCRIPT

 

对于经常使用mysql的兄弟们,对explain一定不会陌生。当你在一条SELECT语句前放上关键词EXPLAIN,MySQL解释它将如何处理SELECT,提供有关表如何联合和以什么次序的信息。
借助于EXPLAIN,你可以知道
1)你什么时候必须为表加入索引以得到一个使用索引找到记录的更快的SELECT。
2)你也能知道优化器是否以一个最佳次序联结表。为了强制优化器对一个SELECT语句使用一个特定联结次序,增加一个STRAIGHT_JOIN子句。
官方的关于explain的文档在http://dev.mysql.com/doc/refman/5.1/en/using-explain.html(英文),本文可作为官方文献的不完整通俗读物。

使用的方法

EXPLAIN tbl_name
或:
EXPLAIN [EXTENDED] SELECT select_options

前者可以得出一个表的字段结构等等,后者主要是给出相关的一些索引信息,而今天要讲述的重点是后者。

举例

mysql> explain select * from event;
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| 1 | SIMPLE | event | ALL | NULL | NULL | NULL | NULL | 13 | |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
1 row in set (0.00 sec)

各个属性的含义

id
select查询的序列号

select_type
select查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询。

table
输出的行所引用的表。

type
联合查询所使用的类型。
type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
一般来说,得保证查询至少达到range级别,最好能达到ref。

possible_keys
指出MySQL能使用哪个索引在该表中找到行。如果是空的,没有相关的索引。这时要提高性能,可通过检验WHERE子句,看是否引用某些字段,或者检查字段不是适合索引。

key
显示MySQL实际决定使用的键。如果没有索引被选择,键是NULL。

key_len
显示MySQL决定使用的键长度。如果键是NULL,长度就是NULL。文档提示特别注意这个值可以得出一个多重主键里mysql实际使用了哪一部分。

ref
显示哪个字段或常数与key一起被使用。

rows
这个数表示mysql要遍历多少数据才能找到,在innodb上是不准确的。

Extra
如果是Only index,这意味着信息只用索引树中的信息检索出的,这比扫描整个表要快。
如果是where used,就是使用上了where限制。
如果是impossible where 表示用不着where,一般就是没查出来啥。
如果此信息显示Using filesort或者Using temporary的话会很吃力,WHERE和ORDER BY的索引经常无法兼顾,如果按照WHERE来确定索引,那么在ORDER BY时,就必然会引起Using filesort,这就要看是先过滤再排序划算,还是先排序再过滤划算。

常见的一些名词解释

Using filesort
MySQL需要额外的一次传递,以找出如何按排序顺序检索行。

Using index
从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。

Using temporary
为了解决查询,MySQL需要创建一个临时表来容纳结果。

ref
对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取

ALL
完全没有索引的情况,性能非常地差劲。

index
与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。

SIMPLE
简单SELECT(不使用UNION或子查询)

转自: http://www.54chen.com/architecture/mysql-explain.html

 

 

分享到:
评论

相关推荐

    mysql查询分析器

    MySQL查询分析器是一种用于执行SQL查询并分析数据库性能的工具,尤其在大型复杂数据库系统中,它是数据库管理员和开发人员的得力助手。MySQL查询分析器通常具备多种功能,包括编写、测试、优化以及监控SQL语句,以...

    mySQL查询分析器

    mySQL查询分析器 j简单的JDS小程序,学习程序!

    MYSQL查询分析器

    MySQL查询分析器是一种专为MySQL数据库设计的强大工具,它极大地提升了数据库管理、查询和分析的效率。相较于微软的SQL Server查询分析器,MySQL查询分析器更智能,更适合对MySQL数据库进行高效操作。这款工具以其...

    编程开发-数据库类-mysql查询分析工具 v10.1.7.zip

    MySQL查询分析工具是一款用于优化和调试MySQL数据库查询的软件,其v10.1.7版本提供了丰富的功能,帮助开发者高效地管理和维护数据库。这款工具是编程开发领域中数据库类的重要辅助工具,对于理解SQL语句执行性能、...

    MySQL企业版监控器与查询分析器

    MySQL企业版监控器与查询分析器的知识点: 1. MySQL企业版概述:MySQL企业版是一个综合性的数据库解决方案,它包括了数据库本身、监控软件以及产品支持服务。这种组合设计的目的是为了应对和解决开发人员与数据库...

    Mysql查询流程分析

    ### MySQL查询流程分析 在深入理解MySQL查询流程之前,我们首先需要明确几个基本概念:MySQL是一种关系型数据库管理系统,它支持SQL(Structured Query Language)语言,用于管理存储在表格中的数据。MySQL查询流程...

    OneSql(SQL&MySql查询分析器)

    献给学习Java的人 这个是我和好友开发出来的,用于SQL2005和Mysql的查询分析器,附带可根据数据库生成Java或者C#实体类的功能,最大的优点就是省资源,版本完善中……,希望大家献上宝贵的意见!

    PHP-Mysql注射分析器

    PHP-Mysql注射分析器是一种专门用于检测和分析PHP应用程序与MySQL数据库交互过程中潜在安全漏洞的工具。在Web开发中,PHP与MySQL的结合是常见的选择,但如果不恰当处理用户输入,就可能导致SQL注入攻击。这种攻击...

    五款常用mysql slow log分析工具

    描述:本文对五款常用的MySQL慢查询日志分析工具进行深入解析,旨在帮助DBA、开发者和运维人员更有效地定位和优化数据库性能瓶颈。 ### MySQL Slow Log概念 MySQL慢查询日志(Slow Query Log)是一种用于记录执行...

    MySql查询小工具

    MySQL查询小工具是一款专为MySQL数据库设计的实用应用程序,它提供了对数据库进行高效查询和管理的能力。这款工具支持SQL语句的执行,包括增(INSERT)、删(DELETE)、查(SELECT)和改(UPDATE)等基本操作,以及...

    PHP+MYSQL中学成绩查询分析系统

    总的来说,"PHP+MYSQL中学成绩查询分析系统"是教育信息化的一个实用工具,结合了强大的PHP编程能力和高效的MYSQL数据库管理,实现了成绩的有效存储、查询和分析,有助于提升教学管理效率,同时也为个性化教学提供了...

    mysql慢日志分析工具mysqlsla

    MySQLsla是一款专为MySQL数据库设计的慢查询日志分析工具,它可以帮助数据库管理员高效地分析和理解MySQL服务器上的慢查询情况,从而优化数据库性能。在MySQL的运行过程中,某些SQL语句执行时间过长,就会被记录到慢...

    MySQL可视化查询工具

    MySQL可视化查询工具,如“navicat110_mysql_cs_x64.exe”,是数据库管理员和开发人员在处理MySQL数据库时的重要辅助工具。它提供了一个直观的图形界面,使得数据库管理、数据操作以及复杂的SQL查询变得更为简单。...

    MySQL日志分析(包括工具)

    1. **mysqldumpslow**:MySQL官方提供的慢查询日志分析工具,支持基本的统计信息提取。 2. **mysqlsla**:Perl脚本,功能强大,支持高级统计信息提取,能够生成全面的数据报表。 3. **mysql-explain-slow-log**:...

    MS查询分析器功能强大性能高

    总的来说,无论是MS查询分析器还是现代的SSMS,或者是针对MySQL的工具,这些数据库管理工具都是提升数据库操作效率的关键。它们让开发者和DBA能够更加便捷地进行数据操作,优化查询性能,从而更好地服务于业务需求。

    功能强大的查询分析器

    综合以上信息,我们可以得出结论,这个“功能强大的查询分析器”是一个高度功能化的数据库管理和查询工具,具备多数据库支持(包括SQL Server和MySQL)、多表查询、关键词高亮显示等特性,并且是用C#语言编写的,...

    mysql性能分析工具mysqlreport)

    mysqlreport是由hackmysql.com 的站长所撰写的 Perl Scritps,旨在协助 MySQL DBA 搜集与分析 MySQL 的运作状况。用着感觉不错。 官方网站: http://hackmysql.com/ 软件下载: http://hackmysql.com/mysqlreport

    mysql可视化工具

    MySQL可视化工具是数据库管理员、开发人员和数据分析师的利器,它们提供了一种直观的方式来与MySQL数据库进行交互,而无需编写复杂的SQL查询语句。这些工具通常具有图形用户界面(GUI),使得数据库管理、数据浏览、...

Global site tag (gtag.js) - Google Analytics