首先,不管进行何种优化,开启慢查询都算是前置条件。
慢查询机制,将记录过慢的查询语句(事件),从而为DB维护人员提供优化目标。前端
经过show variables like 'slow_query_log'
这条语句,能够找到慢查询的状态(On/Off)。mysql
本文使用的MySQL版本:MariaDB - 10.1.19,请注意,不一样版本的MySQL存在差别。sql
在[mysqld]下加入:优化
[mysqld] port= 3306 slow-query-log=1 # 慢查询:确认开启 slow-query-log-file="D:/xampp/mysql/log/mysql-slow.log" # 慢查询:日志文件及路径 long_query_time = 5 # 慢查询:指定超过5s仍未完成的语句,为执行过慢的语句
观察日志,锁定须要优化的目标语句。注意SQL的设置,譬如:SQL_NO_CACHE。设计
关注复杂语句写法。复杂语句自己具有高自由度,再加上SQL语法的特殊性,致使了不一样的写法的同功能复杂语句,可能具有云泥之别的效率。日志
明确应用场景,尽管咱们在各类场合都有原则,但实际上,若是可以明确应用场景,咱们可以针对当前状况,作出本地化的高效优化。code
没法优化的语句,当咱们经过上述两种方法,以及更多未被本文说起的优化方法以后,可能仍是会面对优化失败的状况。业务层面不作出修正的话,数据层面的确是无力可以使。游戏
当打出“没法优化”的时候,不由想到了我所喜好的游戏设计行业。
若是你了解一二,就会发现,游戏设计中,其实有至关多的优秀设计,但大多数都困窘于当时当地的技术水平,而没法实现多彩纷呈的游戏设计。
也还记得去年作UI的朋友跟我吐槽:我就怕我设计的出来,很炫酷或者很人文,可前端根本实现不了那种设计。事件