mysql语句级查询优化之一

mysql语句级查询优化之一
mysql语句级查询优化之二


优化 SQL 的最高境界是回归需求,只有正确的理解了需求,才能写出高效的SQL,因此改写 SQL 往往是优化SQL 的重要手段。
虽然说读懂执行计划是SQL 优化中极其重要的环节,但是如果不能读懂需求,写出复杂繁琐绕了九曲十八弯的SQL 语句,通过分析执行计划来调优,往往还是会陷入到束手无策之中。

1、join查询类型

1.1、SQL书写顺序

SELECT <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>

1.2、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>

1.3、SQL执行结果小结

2 JOIN查询结果集图解

2.1 LEFT JOIN ON

SELECT <select_list> 
FROM tableA A
LEFT JOIN tableB B
ON A.key = B.key;

2.2 RIGHT JOIN ON

SELECT <select_list> 
FROM tableA A
RIGHT JOIN tableB B
ON A.key = B.key;

2.3 INNER JOIN ON

join 默认为 inner join

SELECT <select_list> 
FROM tableA A
INNER JOIN tableB B
ON A.key = B.key;

2.4 LEFT JOIN ON WHERE

SELECT <select_list> 
FROM tableA A
LEFT JOIN tableB B
ON A.key = B.key
WHERE B.key IS NULL;

2.5 RIGHT JOIN ON WHERE

SELECT <select_list> 
FROM tableA A
RIGHT JOIN tableB B
ON A.key = B.key
WHERE A.key IS NULL;

2.6 FULL OUTER JOIN ON

SELECT <select_list> 
FROM tableA A
FULL OUTER JOIN tableB B
ON A.key = B.key

2.7 FULL OUTER JOIN ON WHERE

SELECT <select_list> 
FROM tableA A
FULL OUTER JOIN tableB B
ON A.key = B.key
WHERE A.key IS NULL OR 
	  B.key IS NULL

2.3、建表SQL

2.4、7种join实例

3、索引介绍

4、性能分析

5、索引优化

1、性能下降SQL慢、执行时间长、等待时间长

猜你喜欢

转载自blog.csdn.net/Michael_lcf/article/details/105003536#comments_25439025
今日推荐