1、MySQL優化歸納mysql
2、SQL優化sql
實踐:數據庫
1.查看是否開啓了慢查詢日誌工具
show variables like 'slow_query_log'學習
沒有開啓優化
2.查看是否開啓了未使用索引SQL記錄到日誌網站
show variables like '%log%';操作系統
沒有開啓3d
3.查看慢查詢多少秒才記錄到日誌日誌
show variables like 'long_query_time';
4.查看慢查詢日誌位置
5.開啓上面的一些配置
set global slow_query_log=on;//開啓慢查詢日誌
set global log_queries_not_using_indexes=on;//開啓記錄沒有用索引的SQL到慢查詢
set global long_query_time=1;//超過1秒的查詢記錄到日誌
6.MySQL慢查詢日誌分析工具mysqldumpslow,官方的
7.MySQL慢查詢日誌分析工具pt-query-digest,第三方、更好。SQL次數、百分比、具體SQL
8.如何分析SQL查詢
9.explain實踐,查看計劃(SQL執行前都有執行計劃)
10.具體的SQL優化
(1)count()和Max()的優化
(2)子查詢優化
(3)group by的優化
(4)Limit查詢的優化
(5)等等
3、索引優化
解釋上面3個爲何:
1.一個索引包含了查詢的全部列,那麼稱這個索引爲覆蓋索引。覆蓋索引效率高
2.字段多致使一次索引獲取數據量大,IO操做成本就會高
3.怎麼知道離散度?select distinct,越高的離散度越好,排前面
重複冗餘的索引不只影響插入並且影響查詢
複製粘貼,只要輸入密碼便可
4、數據庫結構優化
1.
innodb中,對於Null的字段須要額外存儲,儘可能not null
2.垂直拆分
字段不少,拆分多個表,用外鍵(不管是否是物理上的)關聯
3.水平拆分
把數據分到多個結構一致的表裏去,上下太長(數據量多)須要水平切割。
5、系統配置優化
1.操做系統方面
表比較多的話,查詢會佔用文件數
2.MySQL自己配置優化方面
一個網站,點進去 嚮導式地教你,而後下載配置文件
6、硬件優化
非原創,學習整理