相信大部分入门数据库的朋友都是从数据库的“增删改查”学起的。其实,对于很多搞业务的非专业技术人员而言,可能基本的增删改查也够用了,因为目的并不是要写的多好,只要能正确查到自己想要的分析的数据就可以了。
但是,对于一个专业搞数据分析的人而言,可就没那么简单了。这个自己平时跑个小数可能也没啥感觉,但现实工作中当公司业务数据量达到百万甚至千万级以上时,一个查询语句写的好坏所造成的影响就尤为明显了。所以也就不难理解为什么面试的时候面试官喜欢问一些关于优化的问题。
为了了解自己写的SQL是好是坏,MySql提供了Explain执行计划功能。它对优化SQL语句尤为的重要,通过它可以看清执行过程的细节,分析查询语句或是结构的性能瓶颈,找到问题所在。
explain的使用很简单,就是在select 语句之前增加 explain关键字就ok了。MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL。比如这样:
# explain + sql
explain select * from table where a = 1;
确定表的读取顺序
数据读取操作的操作类型
哪些索引可以使用
哪些索引被实际使用
表之间的引用
每张表有多少行被优化器查询
可以看出执行计划给我们提供的信息是非常有帮助的。只有读懂了这些内容,才能定位问题点在哪,进而去 解决。