SQL优化之基于SQL特征的改写

2025-08-30Oracle

1.1 环境介绍

1.2 SQL文本

1756814967722-3d957f8e-6108-4c8a-89f7-699fe944db91.png

1.3 执行计划

1756814967789-c7f249fb-a4a6-46d3-a04f-d38cd7fbc779.png

1.4 执行统计信息

1756814967850-c3b1ec0c-e85e-463d-bc38-e8840bae4a92.png

2.1 SQL文本特征

1756814967903-d4e775d2-82c4-4603-94c6-550cfc005f87.png

2.2 执行计划的特征

1756814967967-2986f6b5-e5c5-4b63-97fd-ec1dbe5fbe8c.png

2.3 补充信息收集之表统计信息

2.4 补充信息收集之执行计划解读

2.5 执行统计信息特征

1756814968046-9123bac1-beba-423b-9e66-ba6bb6d4cb90.png

3.1 老K的例行思考

3.2 老K的答案—-不是最优的计划

3.3 老K的答案—-想要的计划

3.4 老K的答案—-如何生成漂亮的执行计划

1756814968100-62f3586a-8480-4db2-9467-4a590b5cf4e5.png

4.1 改写的花絮

1756814968158-9b2243cc-7ccf-4ccc-a60f-a2f8a7184629.png
1756814968226-ee152e4e-0dfe-43ce-9620-799fa92bb7fa.png

4.2 这样改写真的好吗?

4.3 继续改写

4.4 增加冗余

1756814968287-93a450ca-dd63-4953-a7f2-62c8ace044d1.png

4.5 关键角色转变:

1756814968347-b7a8753d-c3e7-4e38-b471-f004e8c66136.png

4.6 减少冗余:

1756814968406-e35a61db-197b-40bc-9ec8-50de3c3d8b92.png
1756814968475-1e149fda-315d-446d-8ef0-77fcabe156aa.png

4.7 别忘了”set“

1756814968529-b10ae455-08f0-4091-9eea-c1ecf563d7d3.png
1756814968590-ff6c3f56-b80a-45cb-ac72-2923b63812e4.png
1756814968652-ca7b9a30-b845-4f33-bfec-fede6c1daf3d.png
1756814968652-ca7b9a30-b845-4f33-bfec-fede6c1daf3d.png