推薦序一
推薦序二
前言
第一篇 查詢優化技術
第1章 數據管理係統的查詢優化
1.1 數據庫調優
1.2 查詢優化技術
1.2.1 查詢重用
1.2.2 查詢重寫規則
1.2.3 查詢算法優化
1.2.4 並行查詢優化
1.2.5 分布式查詢優化
1.2.6 其他優化
1.3 本章小結
第2章 邏輯查詢優化
2.1 查詢優化技術的理論基礎
2.1.1 關係代數
2.1.2 關係代數等價變換規則對優化的指導意義
2.2 查詢重寫規則
2.2.1 子查詢的優化
2.2.2 視圖重寫
2.2.3 等價謂詞重寫
2.2.4 條件化簡
2.2.5 外連接消除
2.2.6 嵌套連接消除
2.2.7 連接消除
2.2.8 語義優化
2.2.9 針對非SPJ的優化
2.3 啓發式規則在邏輯優化階段的應用
2.4 本章小結
第3章 物理查詢優化
3.1 查詢代價估算
3.1.1 代價模型
3.1.2 選擇率計算的常用方法
3.2 單錶掃描算法
3.2.1 常用的單錶掃描算法
3.2.2 單錶掃描代價計算
3.3 索引
3.3.1 如何利用索引
3.3.2 索引列的位置對使用索引的影響
3.3.3 聯閤索引對索引使用的影響
3.3.4 多個索引對索引使用的影響
3.4 兩錶連接算法
3.4.1 基本的兩錶連接算法
3.4.2 進一步認識兩錶連接算法
3.4.3 連接操作代價計算
3.5 多錶連接算法
3.5.1 多錶連接順序
3.5.2 常用的多錶連接算法
3.5.3 多錶連接算法的比較
3.6 本章小結
第4章 查詢優化器與其他模塊的關係
4.1 查詢優化器整體介紹
4.2 查詢優化器與其他模塊的關係
4.3 本章小結
第二篇 PostgreSQL查詢優化器原理解析
第5章 PostgreSQL查詢優化器概述
5.1 PostgreSQL查詢執行過程
5.2 PostgreSQL查詢優化器的架構和設計思想
5.2.1 PostgreSQL查詢優化器架構
5.2.2 PostgreSQL查詢優化器的層次
5.2.3 PostgreSQL查詢優化器設計思想
5.3 主要概念
5.4 代碼層次結構
5.5 本章小結
第6章 PostgreSQL查詢優化器相關數據結構
6.1 主要數據結構
6.1.1 基本數據結構
6.1.2 查詢樹
6.1.3 各種對象的結構
6.1.4 連接操作相關的結構
6.1.5 查詢執行計劃相關的結構
6.2 各個結構之間的關係
6.3 各個階段間和主要結構體間的關係
6.4 本章小結
第7章 PostgreSQL查詢優化器實現原理解析
7.1 查詢優化整體流程
7.2 查詢優化器實現原理解析
7.2.1 planner--主入口函數
7.2.2 standard_planner--標準的查詢優化器函數
7.2.3 subquery_planner--生成(子)查詢執行計劃函數
7.2.4 grouping_planner--生成查詢執行計劃並對非SPJ優化
7.2.5 build_minmax_path--聚集函數MIN/MAX的優化函數
7.2.6 query_planner--生成最優的查詢路徑函數
7.2.7 make_one_rel--構造多錶連接路徑並選齣最優路徑函數
7.2.8 make_rel_from_joinlist--生成多錶連接路徑函數
7.2.9 optimize_minmax_aggregates--聚集操作MIN/MAX優化函數
7.2.10 create_plan--創建查詢執行計劃函數
7.2.11 非SPJ處理--grouping_planner的各個子模塊
7.2.12 其他重要的函數與操作
7.3 代價估算實現原理解析
7.3.1 查詢代價估算
7.3.2 單錶掃描方式的代價估算
7.3.3 兩錶連接的代價估算
7.3.4 其他代價估算函數
7.3.5 選擇率的計算
7.4 從目錄結構和文件功能角度看查詢優化器
7.4.1 查詢優化子模塊與主要文件的關係
7.4.2 查詢優化器代碼結構
7.5 本章小結
第8章 從功能的角度看PostgreSQL查詢優化
8.1 優化器之邏輯查詢優化
8.1.1 視圖重寫
8.1.2 子查詢優化
8.1.3 等價謂詞重寫
8.1.4 條件化簡
8.1.5 外連接消除
8.1.6 嵌套連接消除
8.1.7 連接的消除
8.1.8 語義優化
8.1.9 選擇操作下推
8.1.10 非SPJ優化
8.2 優化器之物理查詢優化
8.2.1 PostgreSQL的物理優化主要完成的工作
8.2.2 啓發式規則在物理查詢優化階段的使用
8.2.3 兩錶連接
8.2.4 代價估算
8.2.5 PostgreSQL的索引與查詢優化
8.3 其他
8.3.1 grouping_planner函數主乾再分析
8.3.2 用戶指定的連接語義與PostgreSQL實現兩錶連接的函數及算法的關係
8.3.3 集閤操作優化
8.4 本章小結
第9章 PostgreSQL查詢優化的關鍵算法
9.1 動態規劃算法
9.1.1 動態規劃算法的處理流程
9.1.2 緊密樹處理流程
9.2 遺傳算法
9.2.1 PostgreSQL遺傳算法的處理流程
9.2.2 主要的數據結構
9.2.3 主要的函數和變量
9.2.4 應用遺傳算法實現錶連接的語義
9.2.5 應用遺傳算法計算適應度
9.2.6 進一步理解PostgreSQL的遺傳算法
9.3 動態規劃算法與遺傳算法對比
9.4 本章小結
第10章 PostgreSQL查詢優化器與其他部分的關係
10.1 查詢優化器與語法分析器
10.2 查詢優化器與執行器
10.3 查詢優化器與緩衝區管理模塊
10.4 查詢優化器與對象訪問模塊
10.5 查詢優化器與統計模塊
10.6 查詢優化器與索引模塊
10.7 本章小結
第三篇 MySQL查詢優化器原理解析
第11章 MySQL查詢優化器概述
11.1 MySQL查詢執行過程
11.2 MySQL查詢優化器的架構和設計思想
11.2.1 MySQL查詢優化器架構
11.2.2 MySQL查詢優化器的層次
11.2.3 MySQL查詢優化器設計思想
11.3 主要概念
11.3.1 常量錶
11.3.2 錶數據的訪問方式
11.4 代碼層次結構
11.5 本章小結
第12章 MySQL查詢優化器相關數據結構
12.1 主要的類和數據結構
12.1.1 查詢樹
12.1.2 基本對象
12.1.3 連接對象與執行計劃
12.1.4 代價估算類
12.2 各個階段主要結構體間的關係
12.3 本章小結
第13章 MySQL查詢優化器的原理解析
13.1 查詢優化器整體流程
13.2 優化器的代碼詳解
13.2.1 JOIN.prepare--優化前的準備工作
13.2.2 JOIN.optimize--優化器主入口方法
13.2.3 make_join_statistics--計算最優的查詢優化執行計劃
13.2.4 choose_table_order--求解多錶連接最優連接路徑
13.2.5 make_join_statistics函數的其他子函數
13.2.6 make_join_select--對條件求值、下推連接條件到錶中
13.2.7 test_if_skip_sort_order--排序操作的優化
13.2.8 make_join_readinfo--為連接的每個錶構造信息
13.2.9 JOIN.exec--執行查詢執行計劃的函數
13.3 代價估算
13.3.1 查詢代價估算模型
13.3.2 查詢代價估算過程
13.3.3 其他的代價估算
13.3.4 對存儲引擎的調用接口
13.3.5 統計信息
13.4 本章小結
第14章 從功能的角度看MySQL查詢優化
14.1 優化器之邏輯查詢優化
14.1.1 視圖重寫
14.1.2 子查詢優化
14.1.3 等價謂詞重寫
14.1.4 條件化簡
14.1.5 外連接消除
14.1.6 嵌套連接消除
14.1.7 連接的消除
14.1.8 語義優化
14.1.9 非SPJ優化
14.2 優化器之物理查詢優化
14.2.1 MySQL的物理優化主要完成的工作
14.2.2 啓發式規則在物理查詢優化階段的使用
14.2.3 MySQL的索引與查詢優化
14.2.4 用戶指定的連接語義與MySQL實現兩錶連接的算法
14.3 本章小結
第15章 MySQL查詢優化的關鍵算法
15.1 深入理解MySQL的多錶連接算法
15.2 本章小結
第16章 MySQL查詢優化器與其他部分的關係
16.1 查詢優化器與語法分析器
16.2 查詢優化器與執行器
16.3 查詢優化器與緩衝區管理模塊
16.4 查詢優化器與索引模塊
16.5 本章小結
第四篇 PostgreSQL查詢優化器VSMySQL查詢優化器
第17章 PostgreSQL和MySQL的邏輯查詢優化技術
17.1 查詢重寫
17.1.1 子查詢優化
17.1.2 視圖重寫
17.1.3 等價謂詞重寫
17.1.4 條件化簡
17.1.5 外連接消除
17.1.6 嵌套連接消除
17.1.7 連接消除
17.1.8 語義優化
17.2 非SPJ的優化
17.3 本章小結
第18章 PostgreSQL和MySQL的物理查詢優化技術
18.1 查詢代價估算模型比較
18.2 單錶掃描算法
18.3 索引
18.4 兩錶連接算法
18.5 多錶連接算法
18.6 本章小結
第19章 PostgreSQL和MySQL的其他異同
19.1 啓發式規則的使用比較
19.2 綜閤比較
19.2.1 基本概念的比較
19.2.2 數據結構的比較
19.2.3 設計思想的比較
19.2.4 編碼規範的比較
19.3 本章小結
附錄A 如何掌握數據庫內核
附錄B 如何閱讀本書
附錄C 如何閱讀查詢執行計劃
附錄D 如何跟蹤查詢執行計劃
· · · · · · (
收起)