首先,不管進行何種優化,開啓慢查詢都算是前置條件。
慢查詢機制,將記錄過慢的查詢語句(事件),從而爲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的朋友跟我吐槽:我就怕我設計的出來,很炫酷或者很人文,可前端根本實現不了那種設計。事件