編輯推薦
適讀人群 :數據庫開發人員、應用程序開發人員、數據庫管理員 1.不管是數據庫開發人員、數據庫運維人員、DBA亦或是應用程序開發人員、大數據開發人員等,SQL優化現在已經是這些從業者的專業技能。
2.SQL優化跟做數學題一樣,沒有思路,一輩子都做不齣來。本書既提供瞭SQL優化核心思想,同時也包含瞭大量的SQL優化案例,甚至還提供瞭全自動SQL審核的思想以及代碼。
3.本書的作者是業內知名SQL優化講師,自2012年開始,纍計培訓過數韆名數據庫從業人員。
4.本書的絕大部分內容源自作者自2012年以來開辦的“道森起點”高級SQL優化班,高級SQL優化班在網絡上是數據庫領域中很受歡迎的一門課程。
·大量經典的案例,教你快速構建SQL優化解決方案。
·教你編寫SQL優化全自動腳本,快速提升工作效率。
·每個知識點都提供瞭相應的案例及源代碼,方便讀者動手實驗。
·嘆為觀止的優化技巧,匪夷所思的優化案例。
內容簡介
結構化查詢語言(Structured Query Language,SQL)是一種功能強大的數據庫語言。它基於關係代數運算,功能豐富、語言簡潔、使用方便靈活,已成為關係數據庫的標準語言。
本書旨在引導讀者掌握SQL優化技能,以更好地提升數據庫性能。本書共分10章,從SQL基礎知識、統計信息、執行計劃、訪問路徑、錶連接方式、成本計算、查詢變換、調優技巧、經典案例、全自動SQL審核等角度介紹瞭有關SQL優化的方方麵麵。
本書基於Oracle進行編寫,內容講解由淺入深,適閤各個層次的讀者學習。本書麵嚮一綫工程師、運維工程師、數據庫管理員以及係統設計與開發人員,無論是初學者還是有一定基礎的讀者,都將從中獲益。
作者簡介
羅炳森
網名“落落”,2010年畢業於西南大學軟件工程專業,2015年與他人聯閤齣版瞭《Oracle查詢優化改寫技巧與案例》一書。先後在惠普、用友等大型公司擔任DBA、性能優化工程師等崗位,長期緻力於SQL優化技術的研究和培訓,現階段開始涉及大數據、深度學習和人工智能等領域。
黃超
網名“道道”,2007年畢業於華中科技大學數學係,擅長SQL、PLSQL優化技術,擁有8年多的數據倉庫架構管理經驗,曾參與過大量移動通信、銀行、保險等行業的係統優化升級工作。
鍾僥
網名“七年” ,2009年畢業於武漢理工大學軟件工程專業,擁有8年的數據庫開發運維經驗, 期間主要負責Oracle、MySQL的管理和優化工作,熟悉數據倉庫體係以及大數據等領域。
目錄
第 1章 SQL優化必懂概念 1
1.1 基數(CARDINALITY) 1
1.2 選擇性(SELECTIVITY) 3
1.3 直方圖(HISTOGRAM) 7
1.4 迴錶(TABLE ACCESS BY INDEXROWID) 13
1.5 集群因子(CLUSTERING FACTOR) 15
1.6 錶與錶之間關係 19
第 2章 統計信息 21
2.1 什麼是統計信息 21
2.2 統計信息重要參數設置 24
2.3 檢查統計信息是否過期 32
2.4 擴展統計信息 37
2.5 動態采樣 42
2.6 定製統計信息收集策略 47
第3章 執行計劃 49
3.1 獲取執行計劃常用方法 49
3.1.1 使用AUTOTRACE查看執行計劃 49
3.1.2 使用EXPLAIN PLAN FOR查看執行計劃 52
3.1.3 查看帶有A-TIME的執行計劃 54
3.1.4 查看正在執行的SQL的執行計劃 56
3.2 定製執行計劃 57
3.3 怎麼通過查看執行計劃建立索引 59
3.4 運用光標移動大法閱讀執行計劃 63
第4章 訪問路徑(ACCESS PATH) 67
4.1 常見訪問路徑 67
4.1.1 TABLE ACCESS FULL 67
4.1.2 TABLE ACCESS BY USER ROWID 71
4.1.3 TABLE ACCESS BY ROWID RANGE 71
4.1.4 TABLE ACCESS BY INDEX ROWID 72
4.1.5 INDEX UNIQUE SCAN 72
4.1.6 INDEX RANGE SCAN 73
4.1.7 INDEX SKIP SCAN 74
4.1.8 INDEX FULL SCAN 75
4.1.9 INDEX FAST FULL SCAN 77
4.1.10 INDEX FULL SCAN (MIN/MAX) 80
4.1.11 MAT_VIEW REWRITE ACCESS FULL 83
4.2 單塊讀與多塊讀 83
4.3 為什麼有時候索引掃描比全錶掃描更慢 84
4.4 DML對於索引維護的影響 84
第5章 錶連接方式 86
5.1 嵌套循環(NESTED LOOPS) 86
5.2 HASH連接(HASH JOIN) 90
5.3 排序閤並連接(SORT MERGE JOIN) 93
5.4 笛卡兒連接(CARTESIAN JOIN) 95
5.5 標量子查詢(SCALAR SUBQUERY) 98
5.6 半連接(SEMI JOIN) 100
5.6.1 半連接等價改寫 100
5.6.2 控製半連接執行計劃 101
5.6.3 讀者思考 103
5.7 反連接(ANTI JOIN) 104
5.7.1 反連接等價改寫 104
5.7.2 控製反連接執行計劃 105
5.7.3 讀者思考 108
5.8 FILTER 108
5.9 IN與EXISTS誰快誰慢 111
5.10 SQL語句的本質 111
第6章 成本計算 112
6.1 優化SQL需要看COST嗎 112
6.2 全錶掃描成本計算 112
6.3 索引範圍掃描成本計算 116
6.4 SQL優化核心思想 119
第7章 必須掌握的查詢變換 120
7.1 子查詢非嵌套 120
7.2 視圖閤並 125
7.3 謂詞推入 129
第8章 調優技巧 133
8.1 查看真實的基數(Rows) 133
8.2 使用UNION代替OR 134
8.3 分頁語句優化思路 135
8.3.1 單錶分頁優化思路 135
8.3.2 多錶關聯分頁優化思路 150
8.4 使用分析函數優化自連接 153
8.5 超大錶與超小錶關聯優化方法 154
8.6 超大錶與超大錶關聯優化方法 155
8.7 LIKE語句優化方法 159
8.8 DBLINK優化 161
8.9 對錶進行ROWID切片 167
8.10 SQL三段分拆法 169
第9章 SQL優化案例賞析 170
9.1 組閤索引優化案例 170
9.2 直方圖優化案例 173
9.3 NL被驅動錶不能走INDEX SKIP SCAN 177
9.4 優化SQL需要注意錶與錶之間關係 178
9.5 INDEX FAST FULL SCAN優化案例 179
9.6 分頁語句優化案例 181
9.7 ORDER BY取彆名列優化案例 183
9.8 半連接反嚮驅動主錶案例一 185
9.9 半連接反嚮驅動主錶案例二 187
9.10 連接列數據分布不均衡導緻性能問題 192
9.11 Filter優化經典案例 198
9.12 樹形查詢優化案例 202
9.13 本地索引優化案例 204
9.14 標量子查詢優化案例 206
9.14.1 案例一 206
9.14.2 案例二 207
9.15 關聯更新優化案例 211
9.16 外連接有OR關聯條件隻能走NL 213
9.17 把你腦袋當CBO 217
9.18 擴展統計信息優化案例 221
9.19 使用LISGAGG分析函數優化WMSYS.WM_CONCAT 227
9.20 INSTR非等值關聯優化案例 230
9.21 REGEXP_LIKE非等值關聯優化案例 233
9.22 ROW LEVEL SECURITY優化案例 237
9.23 子查詢非嵌套優化案例一 240
9.24 子查詢非嵌套優化案例二 247
9.25 爛用外連接導緻無法謂詞推入 252
9.26 謂詞推入優化案例 262
9.27 使用CARDINALITY優化SQL 268
9.28 利用等待事件優化SQL 272
第 10章 全自動SQL審核 281
10.1 抓齣外鍵沒創建索引的錶 281
10.2 抓齣需要收集直方圖的列 282
10.3 抓齣必須創建索引的列 283
10.4 抓齣SELECT * 的SQL 284
10.5 抓齣有標量子查詢的SQL 285
10.6 抓齣帶有自定義函數的SQL 286
10.7 抓齣錶被多次反復調用SQL 287
10.8 抓齣走瞭FILTER的SQL 288
10.9 抓齣返迴行數較多的嵌套循環SQL 290
10.10 抓齣NL被驅動錶走瞭全錶掃描的SQL 292
10.11 抓齣走瞭TABLE ACCESS FULL的SQL 293
10.12 抓齣走瞭INDEX FULL SCAN的SQL 294
10.13 抓齣走瞭INDEX SKIP SCAN的SQL 295
10.14 抓齣索引被哪些SQL引用 297
10.15 抓齣走瞭笛卡兒積的SQL 298
10.16 抓齣走瞭錯誤的排序閤並連接的SQL 299
10.17 抓齣LOOP套LOOP的PSQL 301
10.18 抓齣走瞭低選擇性索引的SQL 302
10.19 抓齣可以創建組閤索引的SQL(迴錶再過濾選擇性高的列) 304
10.20 抓齣可以創建組閤索引的SQL(迴錶隻訪問少數字段) 306
SQL優化核心思想 下載 mobi epub pdf txt 電子書