MySql优化2——索引与性能分析
2017-07-06 17:22
369 查看
一、通过命令查看性能分析报告
set @@profiling=1; select * from talbe; show profiles;
二、进行计划分析
explain select * from event; 得出的结果为以下字段: id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra
id 查询的序列号
select_type 查询的类型,包括:普通查询、联合查询和子查询
table
type 联合查询使用的类型
possible_keys 使用哪个索引在该表中找到该行,如果这个值是空值,则表示没有相关的索引,这时性能有待提升。
key 实际使用的键,如果没有为null
key_len 键长度
ref 显示哪个字段或常数与key一起被使用
rows 这个值表示mysql要遍历多少行才能找到数据
Extra 如果显示onley index表示使用了索引;如果显示where used则使用了where
using filesort表示使用了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为全表扫描,是最坏的情况。 这种情况往往是没用上索引。
mysql索引建立的基本原则:
合理设计和使用索引在关键字段的索引上,建与不建索引,查询的速度相关100倍。
差的索引和没有索引效果一样
索引并非越多越好,因为维护索引需要成本。
每个表的索引应在5个以下,应合理利用部分索引和联合索引。
不在结果集单一的字段上建索引,比如sex,作用不会太大。
建索引的字段结果集最好分布均匀,或者符合正太分布。
推荐:
MySql优化1——SQL语句优化MySql优化3——服务器与配置优化
相关文章推荐
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化-转
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 服务器数据库系列 - 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- mysql性能优化-慢查询分析、优化索引和配置
- 由浅入深探究mysql索引结构原理、性能分析与优化-转
- 由浅入深探究mysql索引结构原理、性能分析与优化
- [转]由浅入深探究mysql索引结构原理、性能分析与优化
- [转]由浅入深探究mysql索引结构原理、性能分析与优化
- 浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- mysql性能优化-慢查询分析、优化索引和配置
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化