mysql 開發進階篇系列 5 SQL 優化
阿新 • • 發佈:2018-07-23
其它 目的 block 垂直拆分 例如 info 分析 設計 plain
一. 使用sql提示
sql 提示(sql hint)是優化數據庫的一個重要手段, 是在sql語句中加入一些人為的提示來達到優化操作的目的。
1.1 use index
在查詢語句中表名的後面,添加use index 強制mysql使用該索引,不考慮其它索引。
EXPLAIN SELECT * FROM city USE INDEX(ix1) WHERE city_id=1;
1.2 ignore index
在查詢語句中表名的後面,添加ignore index,使用mysql忽視一個或者多個索引。
EXPLAIN SELECT* FROM city IGNORE INDEX(ix1) WHERE city_id=14;
1.3 force index
在查詢語句中表名的後面,添加force index,當mysql不走索引時,強制走索引。
-- 某些情況下,有索引但mysql不走索引,強制使用 EXPLAIN SELECT * FROM city FORCE INDEX (PRIMARY) WHERE city_id>0;
二 .優化數據庫對象
1. 優化表的數據類型
在mysql中,可以使用函數procedure analyse()對當前應用的表進行分析。對表列中的數據類型給出合理的改進建議,用戶可以根據實際情況來考慮。
例如:下面生產庫中有一個菜單表,字段類型及長度如下:
-- 使用procedure analyse()分析 SELECT * FROM Adm_Menu PROCEDURE ANALYSE(16,256);
下面remark 字段裏面值的最大長度的是30長度, 所以系統建議給出30長度:
2. 通過折分提高表的訪問效率
折分可以是垂直拆分和水平拆分,這是一種設計思路,這篇不講。
3. 逆規範化
逆規範化也叫提高表的冗余,有利於提高查詢性能。這是一種設計思路,這篇不講。
4. 使用中間表提高統計查詢速度
比如有一個大表記錄了客戶的每天消費記錄,需要按月統計總消費金額, 可以放入到中間表,減輕大表的頻繁查詢. 這是一種設計思路,這篇不講。
mysql 開發進階篇系列 5 SQL 優化