[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