Mysql優化是一個老生常談的問題,sql
優化的方向也優化不少:從架構層;從設計層;從存儲層;從SQL語句層;架構
今天講解一下從索引和字段:優化
字段優化:設計
① 儘可能使用TINYINT、SMALLINT、MEDIUM_INT做爲整數類型而非INT,若是非負則加上UNSIGNED;索引
② VARCHAR的長度只分配真正須要的空間;字符串
③ 使用枚舉或整數代替字符串類型;程序
④ 儘可能使用TIMESTAMP而非DATETIME;im
⑤ 單表不要有太多字段,建議在20之內;查詢
⑥ 避免使用NULL字段,很難查詢優化且佔用額外索引空間;img
⑦ 用整型來存IP;
索引優化:
① 索引並非越多越好,要根據查詢有針對性的建立,考慮在WHERE和ORDER BY命令上涉及的列創建索引,可根據EXPLAIN來查看是否用了索引仍是全表掃描;
② 應儘可能避免在WHERE子句中對字段進行NULL值判斷,不然將致使引擎放棄使用索引而進行全表掃描;
② 值分佈很稀少的字段不適合建索引,例如」性別」這種只有兩三個值的字段;
③ 字符字段只建前綴索引;
④ 字符字段最好不要作主鍵;
⑤ 不用外鍵,由程序保證約束;
⑥ 儘可能不用UNIQUE,由程序保證約束;
⑦ 使用多列索引時主意順序和查詢條件保持一致,同時刪除沒必要要的單列索引;
後續會更新其他方面針對Mysql優化的建議.有疑問請直接給我留言.