MySql优化2——索引与性能分析
来源:互联网 发布:个人音乐网站程序源码 编辑:程序博客网 时间:2024/06/06 02:23
一、通过命令查看性能分析报告
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——服务器与配置优化
阅读全文
0 0
- MySql优化2——索引与性能分析
- 成佩涛——由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 开源社交系统ThinkSNS v4.6.1更新日志及功能详解!
- 动态代理
- bootstrap弹出框
- 【项目】——用js实现导航栏高亮???!!!
- java8笔记
- MySql优化2——索引与性能分析
- centOS 安装mysql
- 为了offer系列——二分查找(C++),附测试用例
- HAUT 1261 地狱飞龙
- 王勇DRP项目重写
- Facebook Surround360 学习笔记--(1)系统简介
- 【<meta name="description" content=">】作用讲解
- Python select 详解
- C++完美转发