基于oracle的sql優化是一本數據庫優化扛鼎巨著,是本土Oracle數據庫性能優化大師崔華泣血力作。全書共有8章,詳細的介紹了Oracle里的優化器,Oracle里的執行計劃,Oracle里的查詢轉換,Oracle里的Hint,Oracle里的并行,Oracle里SQL優化的方法論等內容,囊括數據庫性能優化技術所有分支與脈絡,講解通俗,實例經典,深入研究這些內容,SQL優化的能力一定會有巨大提升,歡迎廣大讀者免費下載閱讀。

基本介紹

《基于Oracle的SQL優化》是一本與眾不同的書,它的目的是使讀者真正掌握如何在Oracle數據庫里寫出高質量的SQL語句,以及如何在Oracle數據庫里對有性能問題的SQL做診斷和調整。本書從Oracle處理SQL的本質和原理入手,由淺入深、系統地介紹了Oracle數據庫里的優化器、執行計劃、Cursor和綁定變量、查詢轉換、統計信息、Hint和并行等這些與SQL優化息息相關的本質性內容,并輔以大量極具借鑒意義的一線SQL優化實例,闡述了作者倡導的“從本質和原理入手,以不變應萬變”的優化思路,最后還介紹了作者在實際工作中總結出來的Oracle數據庫里SQL優化的方法論。《基于Oracle的SQL優化》適用于使用Oracle數據庫的開發人員、OracleDBA和其他對Oracle數據庫感興趣的人員,也可以作為各院校相關專業的教學輔導和參考用書,或作為相關培訓機構的培訓教材。

《基于oracle的sql優化》共8章:

第1章“Oracle里的優化器”,詳細介紹了Oracle數據庫中與優化器相關的各個方面的內容,包括優化器的模式、結果集(RowSource)、集的勢(Cardinality)、可選擇率(Selectivity)、可傳遞性(Transitivity)、各種數據訪問的方法,以及與表連接相關的內容。

第2章“Oracle里的執行計劃”,詳細介紹了Oracle數據里與執行計劃有關的各個方面的內容,包括執行計劃的含義,如何查看執行計劃,如何得到目標SQL真實的執行計劃,如何查看執行計劃的執行順序,Oracle數據庫里各種常見的執行計劃的含義,以及如何在Oracle數據庫中穩定執行計劃。

第3章“Oracle里的Cursor和綁定變量”,詳細介紹了Oracle數據庫中與Cursor和綁定變量相關的各個方面的內容,包括SharedCursor、SessionCursor、綁定變量、游標共享、硬解析、軟解析、軟軟解析,以及與它們息息相關的Oracle數據庫里的四種應用類型。

第4章“Oracle里的查詢轉換”,詳細介紹了Oracle數據庫中與查詢轉換有關的各個方面的內容,包括子查詢展開、視圖合并、星型轉換、連接謂詞推入、連接因式分解、表擴展、表移除,以及Oracle如何處理SQL語句中的IN。

第5章“Oracle里的統計信息”,詳細介紹了Oracle數據庫里與統計信息相關的各個方面的內容,包括Oracle數據庫中各種統計信息的分類、含義、收集和查看方法,以及如何在Oracle數據庫里正確地收集統計信息。

第6章“Oracle里的Hint”,詳細介紹了Oracle數據庫中與Hint有關的各個方面的內容,包括什么是Hint,如何用Hint,Hint什么情況下會失效,以及Oracle數據庫中常見的各種Hint。

第7章“Oracle里的并行”,詳細介紹了Oracle數據庫里并行的基本概念以及在Oracle數據庫里如何控制并行,包括在Oracle數據庫里開啟并行、控制并行度等。

第8章“Oracle里SQL優化的方法論”,介紹了在Oracle數據庫里如何做SQL優化,提出了我們總結出來的Oracle數據庫里SQL優化的方法論,并結合實例驗證了上述方法論。

基于oracle的sql優化章節目錄

第1章 Oracle 里的優化器
1.1 什么是Oracle 里的優化器
1.1.1 基于規則的優化器
1.1.2 基于成本的優化器
1.1.2.1 集的勢
1.1.2.2 可選擇率
1.1.2.3 可傳遞性
1.1.2.4 CBO 的局限性
1.2 優化器的基礎知識
1.2.1 優化器的模式
1.2.2 結果集
1.2.3 訪問數據的方法
1.2.3.1 訪問表的方法
1.2.3.1.1 全表掃描
1.2.3.1.2 ROWID 掃描
1.2.3.2 訪問索引的方法
1.2.3.2.1 索引唯一性掃描
1.2.3.2.2 索引范圍掃描
1.2.3.2.3 索引全掃描
1.2.3.2.4 索引快速全掃描
1.2.3.2.5 索引跳躍式掃描
1.2.4 表連接
1.2.4.1 表連接的類型
1.2.4.1.1 內連接
1.2.4.1.2 外連接
1.2.4.2 表連接的方法
1.2.4.2.1 排序合并連接
1.2.4.2.2 嵌套循環連接
1.2.4.2.3 哈希連接
1.2.4.2.4 笛卡兒連接
1.2.4.3 反連接
1.2.4.4 半連接
1.2.4.5 星型連接
1.3 優化器模式對CBO 計算成本帶來巨大影響的實例
1.4 總結
第2章 Oracle 里的執行計劃
2.1 什么是執行計劃
2.2 如何查看執行計劃
2.2.1 explain plan 命令
2.2.2 DBMS_XPLAN 包
2.2.3 AUTOTRACE 開關
2.2.4 事件與tkprof 命令
2.3 如何得到真實的執行計劃
2.4 如何查看執行計劃的執行順序
2.5 Oracle 里的常見執行計劃
2.5.1 與表訪問相關的執行計劃
2.5.2 與B 樹索引相關的執行計劃
2.5.3 與位圖索引相關的執行計劃
2.5.4 與表連接相關的執行計劃
2.5.5 其他典型的執行計劃
2.5.5.1 AND-EQUAL(INDEX MERGE)
2.5.5.2 INDEX JOIN
2.5.5.3 VIEW
2.5.5.4 FILTER
2.5.5.5 SORT
2.5.5.6 UNION/UNION ALL
2.5.5.7 CONCAT
2.5.5.8 CONNECT BY
2.6 Oracle 里執行計劃的穩定
2.6.1 使用SQL Profile 來穩定執行計劃
2.6.1.1 Automatic 類型的SQL Profile
2.6.1.2 Manual 類型的SQL Profile
2.6.2 使用SPM 來穩定執行計劃
2.7 總結
第3章 Oracle 里的Cursor 和綁定變量
3.1 Oracle 里的Cursor
3.1.1 Oracle 里的Shared Cursor
3.1.1.1 Shared Cursor 的含義
3.1.1.2 硬解析
3.1.1.3 軟解析
3.1.2 Oracle 里的Session Cursor
3.1.2.1 Session Cursor 的含義
3.1.2.2 Session Cursor 的相關參數解析
3.1.2.2.1 OPEN_CURSORS
3.1.2.2.2 SESSION_CACHED_CURSORS
3.1.2.2.3 CURSOR_SPACE_FOR_TIME
3.1.2.3 Session Cursor 的種類和用法
3.1.2.3.1 隱式游標
3.1.2.3.2 顯式游標
3.1.2.3.3 參考游標
3.2 Oracle 里的綁定變量
3.2.1 綁定變量的作用
3.2.2 綁定變量的典型用法
3.2.3 綁定變量的使用原則和**實踐
3.2.3.1 PL/SQL 批量綁定模板一
3.2.3.2 PL/SQL 批量綁定模板二
3.2.4 綁定變量窺探
3.2.5 綁定變量分級
3.2.6 綁定變量的個數不宜太多
3.2.7 批量綁定時如何處理錯誤
3.2.8 如何得到已執行的目標SQL 中綁定變量的值
3.3 Oracle 里的游標共享
3.3.1 常規游標共享
3.3.2 自適應游標共享
3.4 Oracle 里的應用類型
3.4.1 Session Cursor 的生命周期
3.4.2 應用類型一(硬解析)
3.4.3 應用類型二(軟解析)
3.4.4 應用類型三(軟軟解析)
3.4.5 應用類型四(一次解析、多次執行)
3.4.6 四種應用類型的實測性能對比
3.5 總結
第4章 Oracle 里的查詢轉換
4.1 Oracle 里查詢轉換的作用
4.2 子查詢展開
4.3 視圖合并
4.3.1 簡單視圖合并
4.3.2 外連接視圖合并
4.3.3 復雜視圖合并
4.4 星型轉換
4.5 連接謂詞推入
4.6 連接因式分解
4.7 表擴展
4.8 表移除
4.9 Oracle 如何處理SQL 語句中的IN
4.9.1 IN-List Iterator
4.9.2 IN-List Expansion / OR Expansion
4.9.3 IN-List Filter
4.9.4 對IN 做子查詢展開/視圖合并
4.10 查詢轉換的綜合應用實例(邏輯讀從200 萬降到6)
4.11 總結
第5章 Oracle 里的統計信息
5.1 什么是Oracle 里的統計信息
5.2 Oracle 里收集與查看統計信息的方法
5.2.1 收集統計信息
5.2.1.1 用ANALYZE 命令收集統計信息
5.2.1.2 用DBMS_STATS 包收集統計信息
5.2.1.3 ANALYZE 和DBMS_STATS 的區別
5.2.2 查看統計信息
5.3 表的統計信息
5.3.1 表統計信息的種類和含義
5.3.2 表統計信息不準導致SQL 性能問題的實例
5.4 索引的統計信息
5.4.1 索引統計信息的種類和含義
5.4.2 聚簇因子的含義及重要性
5.5 列的統計信息
5.5.1 列統計信息的種類和含義
5.5.2 列統計信息不準導致謂詞越界的實例
5.5.3 直方圖
5.5.3.1 直方圖的含義
5.5.3.2 直方圖的類型
5.5.3.2.1 Frequency 類型的直方圖
5.5.3.2.2 Height Balanced 類型的直方圖
5.5.3.3 直方圖的收集方法
5.5.3.4 直方圖對CBO 的影響
5.5.3.4.1 直方圖對Shared Cursor 的影響
5.5.3.4.2 直方圖對可選擇率的影響
5.5.3.5 使用直方圖的注意事項
5.6 全局統計信息
5.7 動態采樣
5.8 多列統計信息
5.9 系統統計信息
5.10 數據字典統計信息
5.11 內部對象統計信息
5.12 Oracle 里的自動統計信息收集
5.13 Oracle 里應如何收集統計信息
5.14 總結
第6章 Oracle 里的Hint
6.1 什么是Hint
6.2 Hint 的用法
6.3 Hint 被Oracle 忽略的常見情形
6.3.1 情形一:使用的Hint 有語法或者拼寫錯誤
6.3.2 情形二:使用的Hint 無效
6.3.3 情形三:使用的Hint 自相矛盾
6.3.4 情形四:使用的Hint 受到了查詢轉換的干擾
6.3.5 情形五:使用的Hint 受到了保留關鍵字的干擾
6.4 常見的Hint
6.4.1 與優化器模式相關的Hint
6.4.1.1 ALL_ROWS
6.4.1.2 FIRST_ROWS(n)
6.4.1.3 RULE
6.4.2 與表訪問相關的Hint
6.4.2.1 FULL
6.4.2.2 ROWID
6.4.3 與索引訪問相關的Hint
6.4.3.1 INDEX
6.4.3.2 NO_INDEX
6.4.3.3 INDEX_DESC
6.4.3.4 INDEX_COMBINE
6.4.3.5 INDEX_FFS
6.4.3.6 INDEX_JOIN
6.4.3.7 AND_EQUAL
6.4.4 與表連接順序相關的Hint
6.4.4.1 ORDERED
6.4.4.2 LEADING
6.4.5 與表連接方法相關的Hint
6.4.5.1 USE_MERGE
6.4.5.2 NO_USE_MERGE
6.4.5.3 USE_NL
6.4.5.4 NO_USE_NL
6.4.5.5 USE_HASH
6.4.5.6 NO_USE_HASH
6.4.5.7 MERGE_AJ
6.4.5.8 NL_AJ
6.4.5.9 HASH_AJ
6.4.5.10 MERGE_SJ
6.4.5.11 NL_SJ
6.4.5.12 HASH_SJ
6.4.6 與查詢轉換相關的Hint
6.4.6.1 USE_CONCAT
6.4.6.2 NO_EXPAND
6.4.6.3 MERGE
6.4.6.4 NO_MERGE
6.4.6.5 UNNEST
6.4.6.6 NO_UNNEST
6.4.6.7 EXPAND_TABLE
6.4.6.8 NO_EXPAND_TABLE
6.4.7 與并行相關的Hint
6.4.7.1 PARALLEL
6.4.7.2 NO_PARALLEL
6.4.7.3 PARALLEL_INDEX
6.4.7.4 NO_PARALLEL_INDEX
6.4.8 其他常見Hint
6.4.8.1 DRIVING_SITE
6.4.8.2 APPEND
6.4.8.3 APPEND_VALUES
6.4.8.4 PUSH_PRED
6.4.8.5 NO_PUSH_PRED
6.4.8.6 PUSH_SUBQ
6.4.8.7 NO_PUSH_SUBQ
6.4.8.8 OPT_PARAM
6.4.8.9 OPTIMIZER_FEATURES_ENABLE
6.4.8.10 QB_NAME
6.4.8.11 CARDINALITY
6.4.8.12 SWAP_JOIN_INPUTS
6.5 用Cardinality Hint 解決ORA-01555 錯誤的實例
6.6 總結
第7章 Oracle 里的并行
7.1 Oracle 里并行的基本概念
7.1.1 為什么要用并行
7.1.2 并行的理論基礎
7.1.3 Oracle 里能夠并行執行的操作
7.1.4 Oracle 里與并行有關的術語及解釋
7.1.4.1 Query Coordinator
7.1.4.2 Query Slaves 和Query Slave Set
7.1.4.3 Table Queues
7.1.4.4 數據傳遞方法
7.1.4.5 granules
7.1.4.6 直接讀取
7.1.5 深入解析并行執行計劃的實例
7.2 Oracle 里并行的控制
7.2.1 Oracle 里如何開啟并行
7.2.2 Oracle 里并行度的控制
7.2.3 Oracle RAC 環境下的并行
7.2.4 Oracle 里與并行相關的參數
7.2.4.1 PARALLEL_MAX_SERVERS
7.2.4.2 PARALLEL_MIN_SERVERS
7.2.4.3 自動并行相關的參數
7.2.4.3.1 PARALLEL_DEGREE_POLICY
7.2.4.3.2 PARALLEL_MIN_TIME_THRESHOLD
7.2.4.3.3 PARALLEL_DEGREE_LIMIT
7.2.4.3.4 PARALLEL_SERVERS_TARGET
7.2.4.4 自適應并行相關的參數
7.2.4.4.1 PARALLEL_ADAPTIVE_MULTI_USER
7.2.4.4.2 PARALLEL_MIN_PERCENT
7.2.4.4.3 PARALLEL_AUTOMATIC_TUNING
7.2.4.5 其他參數
7.2.4.5.1 PARALLEL_THREADS_PER_CPU
7.2.4.5.2 PARALLEL_EXECUTION_MESSAGE_SIZE
7.2.4.5.3 PARALLEL_FORCE_LOCAL
7.2.5 繞開Oracle 并行執行Bug 大幅提升性能的實例
7.3 總結
第8章 Oracle 里SQL 優化的方法論
8.1 Oracle 里如何做SQL 優化
8.1.1 Oracle 里SQL 優化的本質是基于對CBO 和執行計劃的深刻理解
8.1.2 Oracle 里SQL 優化需要聯系實際的業務
8.1.3 Oracle 里SQL 優化需要適時使用綁定變量
8.2 Oracle 里SQL 優化的方法論在實戰中的驗證
8.3 總結

使用說明

1、下載并解壓,得出pdf文件

2、如果打不開本文件,請務必下載pdf閱讀器

3、安裝后,在打開解壓得出的pdf文件

4、雙擊進行閱讀

基于oracle的sql優化下載-基于oracle的sql優化pdf下載 崔華高清掃描版下載地址

遠程下載