一、sql性能下降的原因
- 查询语句写的比较差
- 索引失效:a.单值索引、b.复合索引
- 关联查询太多join(设计缺陷或不得已的需求)
- 服务器调优及各个参数设置(缓冲、线程数等)
二、常见的join查询
1.左连接
SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key
2.右连接
SELECT <select_list> FROM TableA A RIGHT JOIN TableB B ON A.Key = B.Key
3.内连接
SELECT <select_list> FROM TableA A INNER JOIN TableB B ON A.Key = B.Key
4.全连接
SELECT <select_list> FROM TableA FULL OUTER JOIN TableB B ON A.Key = B.Key
三、sql执行顺序
--> 程序员认为的执行顺序
SELECT DISTINCT
<select_list>
FROM
< left_table > < join_type >
JOIN < right_table > ON < join_condition >
WHERE
< where_condition >
GROUP BY
< group_by_list >
HAVING
< having_condition >
ORDER BY
< order_by_condition >
LIMIT < limit_number >
--> 实际机器读sql的顺序
FROM < left_table >
ON < join_condition >
< join_type > JOIN < right_table >
WHERE < where_condition >
GROUP BY < group_by_list >
HAVING < having_condition >
SELECT
DISTINCT <select_list>
ORDER BY < order_by_condition >
LIMIT < limit_number >