買這商品的人也買了...
-
$420$332 -
$940$700 -
$653實現領域驅動設計 (Implementing Domain-Driven Design)
-
$505億級流量網站架構核心技術 — 跟開濤學搭建高可用高並發系統
-
$450$356 -
$450$351 -
$414$393 -
$447性能之巔:洞悉系統、企業與雲計算 (Systems Performance: Enterprise and the Cloud)
-
$352Effective SQL:編寫高質量SQL語句的61個有效方法
-
$490$417 -
$550$468 -
$350$315 -
$620$484 -
$620$484 -
$450$356 -
$580$458 -
$520$338 -
$607數據庫系統內幕
-
$594$564 -
$780$663 -
$690$587 -
$520大型網站運維:從系統管理到 SRE
-
$1,000$790 -
$880$695 -
$505高並發架構實戰:從需求分析到系統設計
相關主題
商品描述
結構化查詢語言(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