MySQL 执行计划就是在一条 SELECT 语句前放上关键词 EXPLAIN ,MySQL 解释它将如何处理 SELECT,提供有关表如何联合和以什么次序联合的信息。借助于 EXPLAIN 可以知道:
- 什么时候必须为表加入索引,以得到一个使用索引找到记录的更快的 SELECT 方法。
- 优化器是否以一个最佳次序联结表
各属性的含义如下:
id:查询的序列号
select_type:查询的类型,主要包括普通查询、联合查询和子查询。
table: 所访问数据库中表的名称。
type:联合查询使用的类型。
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,则表示通过收集到的统计信息判断出不可能存在的结果。除此之外,Extra 还有下面一些可能值:Using filesort 表示包含 orderby 且无法使用索引进行排序操作时,不得不使用相应的排序算法实现。using temporary 使用临时表,常见于 orderby 和 group by。select tables optimized way 使用聚合函数,并且 MySQL 进行了快速定位。通常是 MAX,MIN,COUNT(*) 等函数。
需要说明的是,type 显示的访问类型是较重要的指标,结果值从好到坏依次是:system(系统表)、const(读常量)、eq_ref(最多一条匹配结果,通常是通过主键访问)、ref(被驱动表索引使用)、fulltext(全文索引检索)、ref_or_null(带空值的索引查询)、index_merge(合并索引结果集)、unique_subquery(子查询中返回的字段是唯一组合或索引)、index_subquery(子查询返回的是索引,但非主键)、range(索引范围扫描)、index(全索引扫描)、ALL(全表扫描)。
一般来说,保证查询至少达到 range 级,最好能达到 ref 级。ALL 为全表扫描,是最坏的情况,这种情况往往是没用上索引。
相关推荐
分析你的查询语句或是表结构的性能瓶颈。 如下面SQL语句: EXPLAIN select * from system_area where status = 1 获得下面的结果: select_type SIMPLE:简单表,不使用表连接或子查询 PRIMARY:主查询,即外层的...
MySQL性能分析show profiles详解(csdn)————程序
mysql的explain分析sql语句性能(慢查询和加没加索引)
《Effective MySQL之SQL语句最优化》是由MySQL专家Ronald Bradford撰著,书 中提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧 做了详细的解释。本书希望能够通过一步步详细介绍SQL优化...
合理的索引设计要建立在对各种查询的分析和预测上。一般来说: a.有大量重复值、且经常有范围查询( > ,,> =,)和order by、group by发生的列,可考虑建立群集索引; b.经常同时存取多列,且每列都含有重复值...
《Effective MySQL之SQL语句最优化》提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧做了详细的解释。《Effective MySQL之SQL语句最优化》希望能够通过一步步详细介绍SQL优化的方法,帮助...
如 MySQL Schema 设计的技巧,Query 语句的性能优化方式方法及MySQL Server中SQL层和存储引擎层的优化思路。同时还分析了 MySQL 数据库中主要存储引擎的锁定机制。架构设计篇则主要以设计一个高可用可扩展的分布式...
6.3 Query语句对系统性能的影响 6.4 Schema设计对系统的性能影响 6.5 硬件环境对系统性能的影响 6.6 小结 第7章 MySQL数据库锁定机制 7.0 引言 7.1 MySQL锁定机制简介 7.2 各种锁定机制分析...
《高性能MySQL(第2版)》包含14章和4个附录,内容覆盖MySQL系统架构、设计应用技巧、SQL语句优化、服务器性能调优、系统配置管理和安全设置、监控分析,以及复制、扩展和备份/还原等主题,每一章的内容自成体系,适合...
如 MySQL Schema 设计的技巧,Query 语句的性能优化方式方法及MySQL Server中SQL层和存储引擎层的优化思路。同时还分析了 MySQL 数据库中主要存储引擎的锁定机制。架构设计篇则主要以设计一个高可用可扩展的分布式...
此包包含mysql的安装包5.6,安装方法,主从复制方法,慢语句查询方法,性能定位方法
我们可以通过 SHOW STATUS 语句查看 MySQL 数据库的性能参数 • SHOW STATUS LIKE 'value‘ 常用的参数: • Slow_queries 慢查询次数: • 什么是慢查询? mysql 读写分离的时候的日志,里面记录了执行某条 sql ...
MySQL语句优化是提高数据库性能的关键步骤,它包括调整参数配置、优化SQL语句和分析执行计划等。以下是一些常见的优化策略: 使用EXPLAIN分析查询:通过在查询语句前加上EXPLAIN关键字,可以了解MySQL是如何处理该...
如 MySQL Schema 设计的技巧,Query 语句的性能优化方式方法及MySQL Server中SQL层和存储引擎层的优化思路。同时还分析了 MySQL 数据库中主要存储引擎的锁定机制。架构设计篇则主要以设计一个高可用可扩展的分布式...
结论:rows 相同条件下,offset 值越大,limit 语句性能越差 二、测试 执行测试: 5750000 条数据 sql 1 执行时间: sql 6执行时间: 三、优化 方式一:可根据主键ID等其他索引字段定位到数据位置,然后使用 limit 0...
此代码为Loadrunner 8 通过C API类型的Vuser 测试MySQL性能,或者测试sql语句性能的脚本。 这东西很少有人用,网上资料很少,一般测试B/S的很多。
全书包含14章和4个附录,内容覆盖MySQL系统架构、设计应用技巧、SQL语句优化、服务器性能调优、系统配置管理和安全设置、监控分析,以及复制、扩展和备份/还原等主题,每一章的内容自成体系,适合各领域技术人员作...
如MySQL Schema设计的技巧,Query语句的性能优化方式方法及MySQL Server中SQL层和存储引擎层的优化思路。同时还分析了MySQL数据库中主要存储引擎的锁定机制 ●架构设计篇则主要以设计一个高可用可扩展的分布式企业级...
《高性能MySQL(第2版)》包含14章和4个附录,内容覆盖MySQL系统架构、设计应用技巧、SQL语句优化、服务器性能调优、系统配置管理和安全设置、监控分析,以及复制、扩展和备份/还原等主题,每一章的内容自成体系,适合...