【表設計】開始,字段儘可能精確,避免過多字段,避免null。數據庫
【存儲引擎】選擇好。工具
【索引】設計好。優化
【查詢優化】,between和exists優於in的使用;union all 比union的效率高。spa
【表分區】的使用。設計
上面屬於單表優化的思路。若是還不能知足需求,就只能選擇對數據庫層級進行操做了(好比垂直拆分和水平拆分)。日誌
儘可能使用TINYINT、SMALLINT、MEDIUM_INT做爲整數類型而非INT,若是非負則加上UNSIGNED索引
VARCHAR的長度只分配真正須要的空間字符串
使用枚舉或整數代替字符串類型io
聯合索引的區分度要看幾個索引的聯合。效率
字符型索引能夠使用前綴索引(考慮區分度要高)。
會失效。
索引就是用空間換取時間,要佔用存儲空間的。
避免使用 select *
in(1,2,3,4) 能夠用 between 1 and 4來代替
儘可能使用 exists 而非 in
union all 比 union 效率要高,並且儘早的union
按月進行表分區實踐。
rows是核心指標,絕大部分rows小的語句執行必定很快。因此優化語句基本上都是在優化rows。