內容介紹
正確使用Oracle資料庫的索引不僅可以實現良好的性能,更重要的是能夠創造出可伸縮的資料庫應用程式。本書在介紹各種類型索引的過程中,始終圍繞性能這一主線,透徹分析了為Oracle資料庫創建和最佳化索引的方方面面。本書三位作者都是經驗豐富的Oracle資料庫管理員,擁有創建、使用和維護索引的豐富經驗。Darl Kuhn是Oracle公司高級資料庫管理員,Sam R. Alapati是Cash美國國際公司高級資料庫架構師,Bill Padfield則是丹佛一家大型電信公司的首席DBA。三位作者在合作撰寫多本廣受讚譽的Oracle圖書之後再次聯手,在這本專門探討資料庫索引的書里,將多年的實踐經驗和心得體會和盤托出。讀者將在作者睿智、謹慎、敏銳的指引下,深入領會Oracle索引技術的精髓。
如果你是菜鳥,本書可助你迅速掌握Oracle索引技術;如果你是資深Oracle資料庫管理員,本書可助你擺脫工作中相關問題的困擾。
作者介紹
Darl KuhnOracle公司高級資料庫管理員,負責資料庫管理從設計、開發到產品支持的各個方面。他還在美國科羅拉多的雷吉斯大學講授高級資料庫課程。另外,Darl還是落基山Oracle用戶組的DBA志願者,擁有美國科羅拉多州立大學研究生學位。
Sam R. Alapati
Oracle ACE,經驗豐富的Oracle資料庫管理員(Oracle Database11g OCP)。目前就職於德克薩斯州沃思堡的Cash美國國際公司,擔任高級資料庫架構師和經理。撰寫過多本資料庫管理方面的圖書,包括《Oracle Database 11g資料庫管理藝術》、《Oracle Database 11g性能最佳化攻略》,均已由人民郵電出版社翻譯出版。
Bill Padfield
Oracle認證專家,具有近30年的IT行業從業經驗,14年以上的Oracle資料庫管理經驗。目前他在科羅拉多州丹佛市的一家大型電信公司擔任首席資料庫管理員,協助控制和管理由75個資料庫系統組成的大型數據倉庫環境。同時,Bill也任教於雷吉斯大學,給研究生講授資料庫課程。
作品目錄
第1章 Oracle 索引11.1 用索引提高性能2
1.2 確定使用哪種類型的索引4
1.2.1 B樹索引5
1.2.2 特定的索引類型7
1.3 確定需要建立索引的列10
1.3.1 主鍵列和唯一鍵列的索引11
1.3.2 外鍵列的索引11
1.3.3 其他適合創建索引的列12
1.4 索引指南12
1.5 小結13
第2章 B樹索引15
2.1 Oracle如何使用B樹索引15
2.1.1 場景一:所有的數據位於索引塊17
2.1.2 場景二:索引中不包含所有信息19
2.1.3?場景三:只有表塊被訪問20
2.2 準備創建B樹索引21
2.2.1 在創建前估計索引的大小21
2.2.2 為索引創建單獨的表空間22
2.2.3 從表空間繼承存儲參數23
2.2.4 命名標準24
2.3 實現B樹索引24
2.3.1 創建B樹索引24
2.3.2 報告索引25
2.3.3 顯示創建索引的代碼26
2.3.4 刪除B樹索引27
2.4 管理帶約束的B樹索引28
2.4.1 在主鍵列上創建B樹索引29
2.4.2 在唯一鍵列上創建B樹索引33
2.4.3 索引外鍵列36
2.5 小結39
第3章 點陣圖索引40
3.1 點陣圖索引41
3.2 創建點陣圖索引44
3.3 創建分區的點陣圖索引45
3.4 在索引組織表上創建點陣圖索引45
3.5 點陣圖索引對查詢性能的影響46
3.6 點陣圖索引對數據載入性能的影響50
3.7 了解點陣圖連線索引53
3.8 創建點陣圖連線索引54
3.9 報告點陣圖索引55
3.10 小結55
第4章 索引組織表56
4.1 索引組織表的結構56
4.2 索引組織表的優勢57
4.3 創建索引組織表58
4.4 添加溢出段60
4.5 壓縮索引組織表62
4.6 構建二級索引63
4.7 重建索引組織表66
4.8 索引組織表報告67
4.9 小結68
第5章 專門索引69
5.1 不可見索引69
5.1.1 不可見索引的用途69
5.1.2 創建不可見索引70
5.1.3 在資料庫中查找不可見索引71
5.1.4 讓最佳化器使用不可見索引71
5.1.5 維護不可見索引72
5.2 基於函式的索引72
5.2.1 創建基於函式的索引73
5.2.2 基於函式的索引的限制76
5.2.3 收集基於函式的索引的統計信息77
5.3 虛擬列上的索引78
5.4 鍵壓縮索引80
5.4.1 鍵壓縮的用途81
5.4.2 創建壓縮索引82
5.4.3 鍵壓縮和存儲84
5.5 複合索引85
5.5.1 了解索引跳躍式掃描和複合索引85
5.5.2 在複合索引中對列進行排列86
5.5.3 為複合索引選擇鍵87
5.6 創建虛擬索引89
5.7 反向鍵索引91
5.7.1 反向鍵索引的缺點92
5.7.2 反向鍵索引的用途94
5.7.3 創建反向鍵索引94
5.8 應用程式域索引94
5.9 小結95
第6章 分區索引96
6.1 分區索引96
6.2 創建本地分區索引97
6.2.1 最簡單的形式97
6.2.2 分區級的需求98
6.2.3 前綴和非前綴選項99
6.3 管理主鍵和唯一索引99
6.4 創建全局分區索引101
6.5 為應用程式選擇索引105
6.6 維護分區表的索引106
6.6.1 添加分區106
6.6.2 截斷分區107
6.6.3 移動分區108
6.6.4 拆分分區108
6.6.5 交換分區110
6.6.6 刪除分區111
6.6.7 合併分區111
6.7 重建全局分區索引和非分區索引112
6.8 把索引分區設定為不可用後重建113
6.9 索引對間隔分區的影響115
6.10 使舊的數據唯讀116
6.11 報告分區索引116
6.12 小結118
第7章 索引使用調優119
7.1 最佳化器訪問路徑119
7.2 索引掃描120
7.2.1 索引唯一掃描120
7.2.2 索引範圍掃描121
7.2.3 索引跳躍式掃描123
7.2.4 全索引掃描124
7.2.5 索引快速全掃描125
7.3 確定查詢是否使用了索引125
7.4 避免使用索引127
7.4.1 在任何情況下都不使用某個索引127
7.4.2 只避免快速掃描128
7.4.3 強制表掃描128
7.5 在索引和表掃描之間選擇128
7.6 最佳化器忽略索引的原因129
7.6.1 不同的行數129
7.6.2 索引聚簇因子130
7.7 索引訪問路徑因沒有新的統計信息而改變131
7.7.1 使用不等條件131
7.7.2 使用通配符查詢133
7.7.3 在謂詞中引用空值134
7.7.4 在查詢中包含函式135
7.7.5 跳過索引的前導部分136
7.8 強制最佳化器使用索引136
7.8.1 套用INDEX提示137
7.8.2 套用相關的提示138
7.8.3 對失敗的索引提示進行診斷139
7.8.4 調整optimizer_index_cost_adj參數140
7.8.5 為索引收集準確的統計信息142
7.9 並行化索引訪問143
7.10 小結144
第8章 維護索引145
8.1 收集索引統計信息145
8.1.1 DBMS_STATS包145
8.1.2 METHOD_OPT參數147
8.2 處理不可用索引148
8.2.1 使索引不可用149
8.2.2 指定SKIP_UNUSABLE_INDEXES參數150
8.3 管理索引使用的空間153
8.3.1 重建索引以減少碎片153
8.3.2 重建反向鍵索引154
8.3.3 回收未使用的空間154
8.3.4 重建分區索引154
8.3.5 頻繁重建索引157
8.4 INDEX_STATS視圖在重建索引時的作用157
8.4.1 INDEX_STATS視圖的優點158
8.4.2 INDEX_STATS視圖的問題160
8.5 關於重建索引的爭論162
8.5.1 重建索引的理由162
8.5.2 反對重建的理由163
8.5.3 關於重建索引的建議163
8.6 合併索引來減少碎片164
8.7 收縮索引以減少碎片165
8.8 移動表和索引166
8.9 提高創建索引的效率167
8.9.1 並行創建索引167
8.9.2 避免在索引創建期間生成重做168
8.9.3 使用較大的塊169
8.9.4 壓縮索引169
8.9.5 同時使用多個選項170
8.10 生成DDL從而創建索引170
8.10.1 使用DBMS_METADATA包170
8.10.2 使用SESSION_TRANSFORM存儲過程171
8.10.3 使用SET_FILTER存儲過程172
8.10.4 使用數據泵173
8.11 刪除索引173
8.12 小結174
第9章 SQL調優顧問176
9.1 工具之間的聯繫176
9.2 自動SQL調優作業178
9.2.1 驗證自動作業在運行178
9.2.2 查看自動SQL調優作業中的建議179
9.2.3 生成SQL腳本來實施自動調優建議181
9.2.4 禁用和啟用自動SQL調優182
9.3 管理SQL調優集183
9.3.1 在AWR中查看占用大量資源的SQL184
9.3.2 查看記憶體中使用大量資源的SQL186
9.3.3 用AWR中占用大量資源的SQL填充SQL調優集187
9.3.4 用記憶體中占用大量資源的SQL填充SQL調優集188
9.3.5 用記憶體中所有的SQL來填充SQL調優集189
9.3.6 顯示SQL調優集的內容190
9.3.7 選擇性刪除SQL調優集中的語句192
9.3.8 將語句添加到現有的SQL調優集193
9.3.9 刪除SQL調優集193
9.4 運行SQL調優顧問193
9.4.1 創建調優任務195
9.4.2 執行DBMS_SQLTUNE並查看建議197
9.4.3 查看和刪除調優任務197
9.4.4 從SQL Developer中運行SQL調優顧問197
9.4.5 從企業管理器運行SQL調優顧問198
9.5 小結199
第10章 SQL訪問顧問200
10.1 為單個SQL語句生成的建議201
10.2 獲得一組SQL語句的建議203
10.3 查詢顧問視圖209
10.4 小結210