sql三表关联查询_SQL优化思路

ad0b553dc4b2b20bc3566179a25abdde.png

找到慢查询SQL

找到优化目标。一个项目中有很多SQL,不要一上来就逐一优化,应该找出需要优化的SQL。客户端需要花费很长时间等待查询结果的慢查询是最需要优化的。开发人员可以通过调用链直接追踪到SQL,数据库管理员可以通过日志拿到慢查询,像DM、MySQL等数据库一般都有慢查询记录日志,可以从中找到慢查询语句,一般数据库都自带有分析慢查询日志的工具。

分析SQL

找到慢查询SQL后也不应急于查看执行计划,创建索引等,而是先分析SQL语句的结构,找出SQL语句存在的问题。SQL语句是否关联了很多表,是否有一些耗时的聚合查询,是否有关联子查询以及表关联顺序等都会影响SQL查询效率。

查看表结构及表数据量

看完SQL语句,查看SQL语句中的表结构及表中的数据量是很有必要的。表结构中字段及数据类型分析,索引结构等都影响SQL查询效率。因此表结构中的字段数据类型是否可以修改为更高效率的数据类型,是否可以添加适量冗余字段而减少表连接查询,索引建立是否合理等都是值得考虑的。

优化SQL

  • 优化SQL语句本身

减少查询输出的字段,不需要的不输出,指定输出列代替 “*” ;减少关联查询关联的表;关联子查询转换为left-join等join查询;case 、字段格式化操作省去,在应用中处理。等等

  • 优化表结构

使用适量的冗余字段;改变一些字段的数据类型(可用int的绝不用string);

  • 优化索引

数据量较少的表不宜建立索引。

​ 创建索引的字段中的值应比较离散,可以使用索引选择性来计算。

​ 几个字段都要建立索引时可以创建联合(复合)索引代替建立多个独立索引。

​ 联合索引中字段排序要慎重考虑,等值条件在前,非等值条件在后;离散性越大的越靠前;离散型相同,让常用字段在前。

​ 索引并不是越多越好,建立的索引要考虑适用尽可能多的业务场景。决不能为每个业务都建立一个特有的索引。

​ 字符串字段创建索引时应截取前面一部分创建索引,而不是全字段创建索引。

  • 分析SQL及优化

开发人员或数据库管理员很清楚数据情况,他们​可以通过SQL执行计划来查看SQL执行过程、耗时的操作和索引使用情况等;在如DM等数据中可以使用explain 查看SQL执行计划,及各部分操作耗时情况。如果数据库没有按照最我们认为最优的计划执行,可用 HINT 提示符指定数据库执行时使用那个索引,以及表链接方式等,也可以开启并行查询。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 全局在胸——用工具对SQL整体优化 1 1.1 都有哪些性能工具 1 1.1.1 不同调优场景分析 2 1.1.2 不同场景对应工具 2 1.2 整体性能工具的要点 4 1.2.1 五大性能报的获取 5 1.2.2 五大报关注的要点 10 1.3 案例的分享与交流 18 1.3.1 和并行等待有关的案例 18 1.3.2 和热块竞争有关的案例 19 1.3.3 和日志等待有关的案例 20 1.3.4 新疆某系统的前台优化 20 1.3.5 浙江某系统的调优案例 21 1.4 本章总结延伸与习题 21 1.4.1 总结延伸 21 1.4.2 习题训练 23 第2章 风驰电掣——有效缩短SQL优化过程 24 2.1 SQL调优时间都去哪儿了 25 2.1.1 不善于批处理频频忙交互 25 2.1.2 无法抓住主要矛盾瞎折腾 25 2.1.3 未能明确需求目标白费劲 26 2.1.4 没有分析操作难度乱调优 26 2.2 如何缩短SQL调优时间 27 2.2.1 先获取有助调优的数据库整体信息 27 2.2.2 快速获取SQL运行台前信息 27 2.2.3 快速拿到SQL关联幕后信息 28 2.3 从案例看快速SQL调优 29 2.3.1 获取数据库整体的运行情况 29 2.3.2 获取SQL的各种详细信息 29 2.4 本章总结延伸与习题 32 2.4.1 总结延伸 32 2.4.2 习题训练 33 第3章 循规蹈矩——如何读懂SQL执行计划 34 3.1 执行计划分析概述 35 3.1.1 SQL执行计划是什么 35 3.1.2 统计信息用来做什么 36 3.1.3 数据库统计信息的收集 37 3.1.4 数据库的动态采样 37 3.1.5 获取执行计划的方法(6种武器) 40 3.2 读懂执行计划的关键 48 3.2.1 解释经典执行计划方法 49 3.2.2 总结说明 55 3.3 从案例辨别低效SQL 55 3.3.1 从执行计划读出效率 56 3.3.2 执行计划效率总结 60 3.4 本章习题、总结与延伸 60 第4章 运筹帷幄——左右SQL执行计划妙招 62 4.1 控制执行计划的方法综述 63 4.1.1 控制执行计划的意义 63 4.1.2 控制执行计划的思路 64 4.2 从案例探索其方法及意义 65 4.2.1 HINT的思路 65 4.2.2 非HINT方式的执行计划改变 72 4.2.3 执行计划的固定 100 4.3 本章习题、总结与延伸 102 第5章 且慢,感受体系结构让SQL飞 103 5.1 体系结构知识 104 5.1.1 组成 104 5.1.2 原理 104 5.1.3 体会 105 5.2 体系与SQL优化 106 5.2.1 与共享池相关 107 5.2.2 数据缓冲相关 111 5.2.3 日志归档相关 116 5.3 扩展优化案例 118 5.3.1 与共享池相关 118 5.3.2 数据缓冲相关 122 5.3.3 日志归档相关 126 5.4 本章习题、总结与延伸 130 第6章 且慢,体验逻辑结构让SQL飞 132 6.1 逻辑结构 132 6.2 体系细节与SQL优化 133 6.2.1 Block 133 6.2.2 Segment与extent 137 6.2.3 Tablespace 139 6.2.4 rowid 139 6.3 相关优化案例分析 140 6.3.1 块的相关案例 141 6.3.2 段的相关案例 144 6.3.3 空间的案例 148 6.3.4 rowid 151 6.4 本章习题、总结与延伸 153 第7章 且慢,探寻的设计让SQL飞 154 7.1 设计 154 7.1.1 的设计 155 7.1.2 其他补充 155 7.2 设计与SQL优化 156 7.2.1 的设计 156 7.2.2 其他补充 179 7.3 相关优化案例分析 184 7.3.1 分区相关案例 185 7.3.2 全局临时案例 190 7.3.3 监控异常的设计 195 7.3.4 设计优化相关案例总结 199 7.4 本章习题、总结与延伸 199 第8章 且慢,学习索引如何让SQL飞 200 8.1 索引知识要点概述 201 8.1.1 索引结构的推理 201 8.1.2 索引特性的提炼 204 8.2 索引的SQL优化 206 8.2.1 经典三大特性 207 8.2.2 组合索引选用 217 8.2.3 索引扫描类型的分类与构造 219 8.3 索引相关优化案例 225 8.3.1 三大特性的相关案例 225 8.3.2 组合索引的经典案例 231 8.4 本章习题、总结与延伸 234 第9章 且慢,弄清索引之阻碍让SQL飞 23

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值