SQL語句優化:
通過慢查詢日志發現有效率問題的sql.
可以通過開啟慢查詢日志的方式進行定位有問題的sql.
1. 檢視mysql是否開啟慢查詢日志
show variables like 'slow_query_log';
2.設定沒有索引的記錄到慢查詢日志
set global log_queries_not_using_indexes=on;
3.檢視超過多長時間的sql進行記錄到慢查詢日志
show variables like 'long_query_time';
4.開啟慢查詢日志
set global slow_query_log=on;
5.設定逾時時間
set global long_query_time=5;超過5秒的語句才記錄日志
set global long_query_time=5;
6.檢視慢查詢日志的位置
show variables like ='slow%';
檢視: show variables
設定: set global
慢查詢日志内容分析:
主要有五部分:
- 慢查詢的時間
- 慢查詢的來源主機和使用者
- 查詢的執行時間、鎖定時間、發送的行數、掃描的行數
- 時間戳形式記錄的指令
- 該指令的執行時間戳
系統運作一段時間後,慢查詢日志可能比較多,可以通過其他一些工具來分析。
對sql語句優化:
- 能分開寫的語句就分開寫,不要一次性就解決,這樣對效率來說是很大的開銷的。
- 避免使用不相容的資料類型,如float和int,char和varchar.
- 盡量避免在where字句中對字段進行函數或表達式操作。
- 避免使用is not null、in等一些無法讓系統使用索引操作的詞。
- 合理使用exists,not exists字句。