Mysql優化之索引和字段

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優化的建議.有疑問請直接給我留言.

相關文章
相關標籤/搜索