[TOC]
#### 简介
SQL优化并不简单,做好SQL优化需要掌握数据库体系结构、表和索引设计、高效SQL写法、高级SQL语法、多种优化工具等知识,甚至还得分析业务特点,以及了解优化器的缺点。
只有建立SQL优化方法论体系,才能够迅速找到适合的方法来优化SQL,从而解决由SQL引发的性能问题。
在这本书里,梁先生全方位详解了SQL性能优化之道,相信读者定会受益良多!
#### 目录
#### 第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飞 235
9.1 索引的不足之处 235
9.1.1 索引的各种开销 236
9.1.2 索引使用失效 236
9.2 感受美好索引另一面 237
9.2.1 索引各种开销 237
9.2.2 索引使用失效 243
9.2.3 索引取舍控制 246
9.3 从案例看索引各种恨 248
9.3.1 索引的开销 248
9.3.2 索引去哪儿了 253
9.3.3 索引的取舍 267
9.4 本章习题、总结与延伸 269
#### 第10章 且慢,其他索引应用让SQL飞 270
10.1 其他索引的总体概述 270
10.1.1 位图索引 271
10.1.2 函数索引 271
10.1.3 反向键索引 272
10.1.4 全文索引 272
10.2 走进其他索引的世界 272
10.2.1 位图索引 273
10.2.2 函数索引 278
10.2.3 反向键索引 282
10.2.4 全文索引 282
10.3 其他索引的相关案例 285
10.3.1 位图索引 286
10.3.2 函数索引 288
10.3.3 反向键索引 297
10.3.4 全文索引 299
10.4 本章习题、总结与延伸 300
#### 第11章 且慢,表连接的秘密让SQL飞 302
11.1 三大经典表连接概要说明 302
11.2 各类型表连接的知识要点 303
11.2.1 从表的访问次数探索 304
11.2.2 表驱动顺序与性能 308
11.2.3 表连接是否有排序 311
11.2.4 各连接的使用限制 314
11.2.5 三大表连接的特性总结 317
11.3 从案例学表连接优化要点 (三刀三斧四式走天下) 317
11.3.1 一次Nested Loops Join的优化全过程 318
11.3.2 一次Hash Join 的 优化全过程 320
11.3.3 一次 Merge Sort Join 的优化全过程 324
11.3.4 一次统计信息收集不准确引发的NL性能瓶颈 329
11.4 本章习题、总结与延伸 332
#### 第12章 动手,经典等价改写让SQL飞 333
12.1 设法减少访问路径 333
12.1.1 Case When改造 334
12.1.2 Rownum分页改写 337
12.1.3 Hint直接路径改造 338
12.1.4 只取你所需的列 339
12.1.5 避免或者减少递归调用 341
12.1.6 ROWID优化应用 347
12.2 设法避免外因影响 350
12.2.1 Hint改写确保执行计划正确 350
12.2.2 避免子查询的错误执行计划 350
12.2.3 所在环境的资源不足等问题 351
12.3 本章习题、总结与延伸 351
#### 第13章 动手,过程函数优化让SQL飞 352
13.1 PL/SQL优化重点 353
13.1.1 定义类型的优化 353
13.1.2 PL/SQL的集合优化 355
13.1.3 PL/SQL的游标合并 361
13.1.4 动态SQL 364
13.1.5 使用10046 trace跟踪PL/SQL 368
13.2 PL/SQL优化其他相关扩展 369
13.2.1 编译无法成功 369
13.2.2 通用脚本分享 370
13.3 本章习题、总结与延伸 380
#### 第14章 动手,高级写法应用让SQL飞 381
14.1 具体SQL调优思路 381
14.1.1 改写SQL调优 382
14.1.2 不改写SQL调优 382
14.2 高级SQL介绍与案例 383
14.2.1 GOURP BY的扩展 383
14.2.2 INSERT ALL 389
14.2.3 MERGE 392
14.2.4 WITH子句 402
14.3 本章习题、总结与延伸 404
#### 第15章 动手,分析函数让SQL飞 406
15.1 高级SQL之分析函数 407
15.1.1 语法概述 407
15.1.2 特别之处 407
15.2 分析函数详解与案例 409
15.2.1 学习详解 410
15.2.2 案例分享 417
15.3 本章习题、总结与延伸 432
#### 第16章 动手,把握需求改写让SQL飞 433
16.1 考虑需求最小化 434
16.2 千万弄清SQL改造的等价性 434
16.2.1 看似等价的写法,其实不等价 435
16.2.2 看似不等价的写法,其实等价 438
16.3 开发设计应用中的需求 439
16.3.1 界面权限设计优化 439
16.3.2 界面汇总与展现 439
16.3.3 界面实时刷新改良 439
16.3.4 目录树菜单的优化 440
16.4 场景选择的经典案例之谁是Count(*)之王 440
16.4.1 优化过程 440
16.4.2 优化总结 445
16.5 本章习题、总结与延伸 446
#### 第17章 总结与延伸:从勿信讹传到洞若观火 447
17.1 SQL优化的各个误区 447
17.1.1 COUNT(*)与COUNT(列)的传言 447
17.1.2 谈SQL编写顺序之流言蜚语 451
17.1.3 IN与EXISTS之争 455
17.1.4 总结探讨 457
17.2 误区背后的话题扩展 457
17.2.1 话题扩展之等价与否优先 457
17.2.2 话题扩展之颠覆误区观点 458
17.3 全书完,致读者 461
- 授权管理
- 角色管理
- 设置密码
- 5.6 版本
- 系统用户
- 当前用户
- 目录
- 设计规划
- 数据字典
- 状态监控
- 查看MYSQL表占用空间状态
- show table status
- SHOW 命令
- SHOW TABLE STATUS
- 表格输出
- 调优
- 书籍培训
- 数据库管理员的第一本书(原书第2版)
- 视频
- 收获,不止SQL优化
- 基本概念
- 工具
- phpMyadmin
- 变更管理
- 数据关系与原则
- 数据完整性
- 业务完整性
- 字段更新(1)
- 订单应用(1)
- 订单应用(2)
- 表间数据连接
- 数据管理
- Cheet Sheet
- Database Administrator
- 索引设计
- Mysql 四种常见的索引
- MySQL索引之主键索引
- MySQL索引使用对查询、插入速度的影响
- 查询优化
- 存储优化
- 分割数据表字段
- Procedure_Analyse优化表结构
- 性能优化
- 拆分DELETE/INSERT语句
- MySQL命令
- 表复制
- 如何快速创建相同结构的表
- 主键设计
- 为什么推荐InnoDB引擎使用自增主键?
- INFORMATION_SCHEMA
- _5.6版本
- USER_PRIVILEGES