面试中,相信不少人遇到个SQL优化的问题,答案基本都是千篇一律,用数据库索引技术。
对此问题,在闲暇之余进行了思路,阅读了mysql技术内幕的相关书籍。根本的优化之道还的从SQL语句出发。
SQL模板:
(8) SELECT (9) DISTINCT <SELECT_LIST>
(1) FROM <LEFT_TABLE> <JOIN_TYPE>
(2) JOIN <RIGHT_TABLE>
(3) ON <JOIN_CONDITION>
(4) WHERE <WHERE_CONDITION>
(5) GROUP BY <GROUP BY_LIST>
(6) WITH <CUBE|ROLLUP>
(7) HAVING <HAVING_CONDITION>
(10) ORDER BY <ORDER_BY_LIST>
(11) LIMIT <LIMIT_NUMBER>
JOIN_TYPE -< LEFT OUTER JOIN , INNER JOIN>
1. 减少查询字段数
2. 表关联尽量用主键
3. 查询条件尽量避免模糊查询
4. 避免使用排序字段,排序字段尽量使用主键
5. 尽量使用限制查询条件
对此问题,在闲暇之余进行了思路,阅读了mysql技术内幕的相关书籍。根本的优化之道还的从SQL语句出发。
SQL模板:
(8) SELECT (9) DISTINCT <SELECT_LIST>
(1) FROM <LEFT_TABLE> <JOIN_TYPE>
(2) JOIN <RIGHT_TABLE>
(3) ON <JOIN_CONDITION>
(4) WHERE <WHERE_CONDITION>
(5) GROUP BY <GROUP BY_LIST>
(6) WITH <CUBE|ROLLUP>
(7) HAVING <HAVING_CONDITION>
(10) ORDER BY <ORDER_BY_LIST>
(11) LIMIT <LIMIT_NUMBER>
JOIN_TYPE -< LEFT OUTER JOIN , INNER JOIN>
1. 减少查询字段数
2. 表关联尽量用主键
3. 查询条件尽量避免模糊查询
4. 避免使用排序字段,排序字段尽量使用主键
5. 尽量使用限制查询条件
6. 查询条件使用有效索引
仅供参考!