继续我们在mysql优化方面的研究,本篇博客,我们用实践的例子在展示我们在编写sql语句方面如何能够使得mysql执行效率更高。
1、首先我们用explain关键字来查询我们编写的sql语句的效率,如图所示:
table:实际对应的表名
possible_keys:可能用到的索引
key:实际用到的索引
ref:通过索引列可以直接引用到的某些数据行
row:实际影响的行数
Extra:表示使用了索引和where子句
2、我们使用一些mysql的内置函数
min()和max()两个函数在使用查询过程中本身就是经过优化的,当使用的是主键查的时候,查询速度是相当快的,例如:select min(id) from it_area where pid=69,其中id是主键。另外尽量使用exists,不要使用子查询:
我们可以使用count(*)查询记录的行数,同样可以把查询数据组建成一个临时表用。group by是用来做统计的,而不能用在需要进行筛选数据的场景。使用union优化的时候,尽量使用union all,采用不过滤数据,因为union去重的代价非常高,我们一般用程序实现去重的部分。当然,我们也可以使用变量来减少我们的查询,将一个操作需要重复多次时,我们可以设置一个变量,通过变量来改变操作的次数。
当然如果where条件中也存在变量时,要where条件先发挥作用,然后才能变量起作用。
如果where条件中的变量不成立的话,那么整个select语句也不会发生作用。
3、通过msql本身的命令查看sql语句的执行情况:
查询增删改查的次数:
设置mysql数据库表的引擎:
查询慢查询:
查询慢查询的时间:
到此关于sql语句方面的优化,我们先介绍上面的内容,对于mysql的优化还远没有结束,值得优化的地方还有很多,下面一篇博客我们从数据库方面分析如何进行mysql的优化。