一. 使用sql提示 sql 提示(sql hint)是優化資料庫的一個重要手段, 是在sql語句中加入一些人為的提示來達到優化操作的目的。 1.1 use index 在查詢語句中表名的後面,添加use index 強制mysql使用該索引,不考慮其它索引。 1.2 ignore index 在查 ...
一. 使用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. 使用中間表提高統計查詢速度
比如有一個大表記錄了客戶的每天消費記錄,需要按月統計總消費金額, 可以放入到中間表,減輕大表的頻繁查詢. 這是一種設計思路,這篇不講。