世界超算排行榜:太湖之光!

IT教程学习网

网站建设

用EXPLAIN语句理解MYSQL数据库查询操作的工作过程

文章来源:深腾网   作者:静岳   浏览量:
EXPLAIN是MYSQL当中一个很重要的语句,它能够测试一个复杂的查询是否能够正常的执行和查询是否超时,从而对数据查询进行优化。
 

使用EXPLAIN有两种方法:

第一种:EXPLAIN tablename;这种方法类似于describe tablename;
第二种:在select 语句前面加上单词EXPLAN即可;这种方法可以用来查看MYSQL是如何来解释并执行一个SELECT查询。
 
下面将重点说第二种方法:

EXPLAIN语句的输出的含义如下:

Id:给出的是该行所引用的查询SELECT语句的ID号。
Select_type:解释了所使用的查询类型。
Table:列出用来完成查询所需的表。
Type:解释了表在查询的关联中是如何使用的。
Rows:列出执行连接所必须扫描的每个表的行数。
Key:是MYSQL实际使用的表中的关键字,或者为NULL。
Key_len:这里说明了所用关键字的长度。
Ref:显示的是用来从表中选择列而必须与关键字一起使用的列。
Extra:告诉我们关于连接是如何执行的,以及其他所有信息。
 
可以用多种方法解决在EXPLAIN的结果中出现的问题。首先,可以检查列类型并且确认它们相同。这特别适用于列宽度。如果它们的列宽度不同,索引不能用于匹配这些列。可以通过修改列类型以使其匹配,或者在设计的开始就建立类型匹配的列,从而解决这个问题。
 
其次,可以让关联优化器来检查关键字的段,因此使用myisamchk或analyze table语句对关联进行优化,使得它效率更高。可以使用如下命令调用它:
Myisamchk --analyze pathtomysqldatabase/table
还可以在MYSQL监视程序中运行ANALYZE table语句来列出所有表:
Analyze table tablename1,tablename2,tablename3;
 
如果EXPLAIN结果possible_keys列包含一些NULL值,可能需要对正在被讨论的表添加一个索引来提高查询性能。如果在WHERE子句中使用的列适合作为索引,可以使用ALTER TABLE 语句来为它创建一个新索引,例如:
ALTER table表 ADD INDEX(列);

分享到:

  • Copyright © 2014-2026 深腾网 版权所有:静岳互联网咨询工作室
  • 冀ICP备16020878-1