MySQL查询语句执行过程及性能优化-基本概念和EXPLAIN语句简介
来源:互联网 发布:女生用的吉他淘宝 编辑:程序博客网 时间:2024/05/22 14:03
网站或服务的性能关键点很大程度在于数据库的设计(假设你选择了合适的语言开发框架)以及如何查询数据上。
我们知道MySQL的性能优化方法,一般有建立索引、规避复杂联合查询、设置冗余字段、建立中间表、查询缓存等,也知道用EXPLAIN来查看执行计划。
但对MySQL复杂查询语句执行过程和内部机制,MySQL Optimizer本身所做优化以及查询语句调整对性能所产生的影响及其原因知之甚少。
本文试图对其中的一些关键概念如执行过程、索引使用等做比较深入的探讨,知其然,知其所以然,
这样可以避免在原本通过MySQL简单优化就能获得很好效果的情况下,盲目跟风转向NoSQL存储或者投入资金升级基础设施。
工欲善其事,必先利其器,这里首先介绍MySQL查询语句性能分析工具。
MySQL的EXPLAIN命令是用来分析查询性能的工具,EXPLAIN的输出每一行对应于查询语句中的一张表的执行计划说明,其输出列含义如下表:
上表中type列是表关联类型,常见的有如下类型(按关联查询效率从高到低排列):
const(常量连接),比如SELECT * FROM user WHERE id=1;eq_ref(等值引用),比如SELECT * FROM user,card WHERE user.id=card.userid;ref(引用),用于非唯一索引,比如SELECT * FROM user,card WHERE user.last_name='test';range(范围),比如SELECT * FROM tbl_name WHERE key_column > 10;index(索引),根据索引来读取数据,如果索引已包含了查询数据,只需扫描索引树,否则执行全表扫描和All类似;ALL(所有),全表扫描
key列代表索引(index),rows表示估计会扫描多少行记录,
Extra表示附加信息,常见的有如下几种(也按查询效率从高到低排列):
Using index:表示使用索引,如果同时出现Using where,代表使用索引来查找读取记录,如果没有Using where,表示索引包含查询数据,无需额外的查找;Using where:表示条件查询,如果type列是ALL或index,而没有出现该信息,则你有可能在执行错误的查询:返回所有数据;Using filesort:不是“使用文件索引”的含义!filesort是MySQL所实现的一种排序策略,通常在使用到排序语句ORDER BY的时候,会出现该信息;Using temporary:表示为了得到结果,使用了临时表,这通常是出现在多表联合查询,结果排序的场合;
如果EXPLAIN出现后面两个信息(Using filesort,Using temporary),而rows又比较大,通常意味着你需要调整查询语句,或者需要添加索引,总之需要尽量消除这两个信息。
by iefreer
- MySQL查询语句执行过程及性能优化-基本概念和EXPLAIN语句简介
- Mysql查询性能优化-善用Explain语句
- Mysql查询性能优化-善用Explain语句
- MySQL查询语句执行过程及性能优化-查询过程及优化方法(JOIN/ORDER BY)
- MySQL查询优化语句--explain
- 【MySql性能优化二】利用explain进行查询和分析sql语句
- mysql查询语句优化命令mysql explain
- mysql explain的用法(使用explain优化查询语句)
- 测试测mysql语句的性能——explain ,Mysql查询优化器的使用
- Mysql查询语句性能优化
- MYSQL之“EXPLAIN语句简介”
- mysql执行sql语句优化分析命令explain命令小记
- mysql执行sql语句优化分析命令explain命令小记
- mysql优化–explain分析sql语句执行效率
- mysql优化–explain分析sql语句执行效率
- mysql 查询语句分析explain
- mysql优化之EXPLAIN语句
- Oracle--查询正在执行和执行过的SQL语句及语句执行性能
- CodeIgniter源码分析之Loader.php
- 在eclipse中反编译并查看jar包的class文件,批量反编译
- 获取本地图片代码
- Python3.3.0+apache2.4.4+django1.5.4+mod_wsgi3.4安装
- 几种网络负载均衡方法比较
- MySQL查询语句执行过程及性能优化-基本概念和EXPLAIN语句简介
- 4 互斥锁的弱化版本:读写锁
- POJ 1265 Area Pick定理
- Codeforces Round #157 (Div. 1) B. Little Elephant and Elections
- log4cplus 学习笔记
- Rhel上安装oracle的配置参数解析,pam,limits,profile
- hive介绍
- 拷贝构造函数与赋值构造函数(operator=)的区别
- Android APK反编译详解(附图)