前言
有一段时间没有写博客了,整天都在忙,上班,录制课程,恰巧最近一段时间比较清闲,打算弄弄MYSQL数据库。
关于MySQL数据库,这里就不做过多的介绍,开源、免费等特性深受各个互联网行业喜爱,尤其在某些大型电商应用之后,更是将其推崇至极。
前面有一段时间我写过SQL Server数据库的一个调优系列,有兴趣的可以关注下。
从本篇起,我将开始分析关于MySQL数据库的一系列的调优内容,同样作为开篇,先就在MySQL调优中所最常用的查询计划进行解析,力图做好基础的掌握,夯实基本功!而后再谈谈整体的语句调优。
文章的部分内容会将MySQL数据库和SQL Server数据库部分内容做一个对比,非抨击孰优孰劣,只叙述技术,权做学习之用。
技术准备
宿主于Window平台下,基于MYSQL5.6版本,利用自带的案例库(sakila)进行解析。
一、关于查询计划
其实,关于所有的关系型数据库中,在运行T-SQL语句的时候,在查询器进行编译运行的同时,都会有着自己的内部的一个优化过程,而这优化之后的产物就是:执行计划。
在SQL SERVER中,我们可以通过很多方式进行查看,方便与对查询语句的执行过程有一定的掌握,同样在MYSQL中,也有着自己的执行计划,相对于SQL Server,它的执行计划的查看方式如下:
EXPLAIN [EXTENDED] SELECT select_options
其实,很简单的一个查看方式,只需要将我们要关心优化的语句前面加上:EXPLAN关键字,MYSQL就会为我们评估当前语句要执行时需要关注的一些点。
类似于SQL SERVER的执行计划,但是可能没有SQL SERVER详细和直观,但是这不妨碍对语句的调优。
来个简单的例子:
EXPLAIN select * from sakila.film_actor where film_id= 1