Oracle 查詢優化改寫技巧與案例2.0 Oracle查询优化改写技巧与案例2.0

有教無類

  • 出版商: 電子工業
  • 出版日期: 2018-06-01
  • 售價: $474
  • 貴賓價: 9.5$450
  • 語言: 簡體中文
  • 頁數: 368
  • 裝訂: 平裝
  • ISBN: 7121341417
  • ISBN-13: 9787121341410
  • 相關分類: Oracle
  • 立即出貨(限量) (庫存=1)

買這商品的人也買了...

商品描述

本書不講具體語法,只是以案例的形式介紹各種查詢語句的用法。第1~4章是基礎部分,講述了常用的各種基礎語句,以及常見的錯誤和正確語句的寫法,應熟練掌握這部分內容,因為在日常查詢和優化改寫中都要用到;第5~12章是提高部分,講解了正則表達式、分析函數、樹形查詢及匯總函數的用法,這部分內容常用於一些復雜需求的實現及優化改寫;最後兩章介紹日常的優化改寫案例,這部分內容是前面所學知識的擴展應用。如果您是開發人員,經常與Oracle打交道,那麽本書可以幫助您處理復雜的需求,寫出高性能的語句。如果您是運維人員,則本書可以幫助您更快地完成慢語句的改寫優化。

作者簡介

師慶棟,網名有教無類。SWOUG(西南Oracle用戶組)成員,資深Oracle開發DBA,道森培訓高級講師。擁有超過17年的IT從業經驗,擅長Oracle數據庫開發,對於數據庫架構設計、性能優化擁有豐富的實戰經驗!通過大量的報表優化改寫,積累了豐富的優化改寫經驗,擅長對Oracle查詢語句的優化改寫。

羅炳森,網名落落。擅長SQL優化,對Oracle優化器有較深的理解。從2007年至今一直專注於SQL優化、表設計優化、SQL查詢改寫。經常熱心幫助網友解決SQL性能問題,累計SQL優化案例上千個。

目錄大綱

第1章單表查詢1 
1.1查詢表中所有的行與列1 
1.2從表中檢索部分行2 
1.3查找空值3 
1.4空值與運算3 
1.5處理空值4 
1.6空值與函數5 
1.7查找滿足多個條件的行6 
1.8從表中檢索部分列7 
1.9為列取有意義的名稱7 
1.10在WHERE子句中引用取別名的列8 
1.11拼接列8 
1.12在SELECT語句中使用條件邏輯9 
1.13限制返回的行數11 

第2章給查詢結果排序12 
2.1以指定的次序返回查詢結果12 
2.2按多個字段排序14 
2.3按子串排序15 
2.4從表中隨機返回n條記錄16 
2.5 TRANSLATE 18 
2.6按數字和字母混合字符串中的字母排序19 
2.7處理排序空值20 
2.8根據條件取不同列中的值來排序21 

第3章操作多個表23 
3.1 UNION ALL與空字符串23 
3.2 UNION與OR 24 
3.3 UNION與去重26 
3.4組合相關的行30
3.5 IN、EXISTS和INNER JOIN 30 
3.6 INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN解析32 
3.7外連接與過濾條件36 
3.8自關聯39 
3.9 NOT IN、NOT EXISTS和LEFT JOIN 40 
3.10檢測兩個表中的數據及對應數據的條數是否相同43 
3.11聚集與內連接44 

第4章插入、更新與刪除49 
4.1插入新記錄49 
4.2阻止對某幾列插入50 
4.3複製表的定義及數據51 
4.4用WITH CHECK OPTION限制數據錄入51 
4.5多表插入語句52 
4.6用其他表中的值更新56 
4.7合併記錄62 
4.8刪除違反參照完整性的記錄64 
4.9刪除名稱重複的記錄64 

第5章使用字符串67 
5.1生成連續數值67 
5.2遍歷字符串68 
5.3計算字符在字符串中出現的次數69 
5.4從字符串中刪除不需要的字符71 
5.5將字符和數字數據分離72 
5.6查詢只包含字母或數字型的數據73 
5.7提取姓名的大寫首字母縮寫78 
5.8根據表中的行創建一個分隔列表79
5.9提取第n個分隔的子串80 
5.10分解IP地址82 
5.11將分隔數據轉換為多值IN列表82 
5.12組合去重83 

第6章使用數字86 
6.1常用聚集函數86 
6.2列轉行88 
6.3行轉列89 
6.4生成累計和91 
6.5累計與重複值95 
6.6生成排名97 
6.7返回最值對應信息98 
6.8求總和的百分比99 

第7章日期運算103 
7.1日期類型103 
7.2日期計算105 
7.3時間間隔類型105 
7.4日期計算函數106 
7.5間隔月份108 
7.6獲取記錄間的間隔時間108 

第8章日期操作112 
8.1提取日期中的信息112 
8.2提取間隔類型中的信息115 
8.3週的計算117 
8.4計算一年中周內各日期的次數119 
8.5確定一年是否為閏年123 
8.6創建本月日曆123 
8.7全年日曆126 
8.8補充範圍內丟失的值129 
8.9識別重疊的日期範圍131 

第9章範圍處理134
9.1定位連續值的範圍134 
9.2合併連續區間136 
9.3合併重疊區間140 
9.4用WITH進行範圍分組143 

第10章高級查找147 
10.1給結果集分頁147 
10.2使用管道函數把全表查詢改為增量查詢149 
10.3內聯視圖與錯誤數據153 
10.4正確使用分析函數155 
10.5找到包含最大值和最小值的記錄157 
10.6提取維度信息159 

第11章報表和數據倉庫運算162 
11.1行轉列子句162 
11.2列轉行子句165 
11.3將結果集反向轉置為一列168 
11.4打印小票與行列轉換169 
11.5數據分組172 
11.6計算簡單的小計173 
11.7判別非小計的行175 
11.8對不同組/分區同時實現聚集177 
11.9移動範圍取值分析179 
11.10計算本期、新增、累加182 
11.11 listagg與小九九186 

第12章分層查詢188 
12.1簡單的樹形查詢188 
12.2根節點、分支節點、葉子節點190 
12.3 sys_connect_by_path 191 
12.4樹形查詢中的排序192
12.5樹形查詢中的WHERE 193 
12.6查詢樹形的一個分支195 
12.7剪去一個分支196 
12.8多行字符串的拆分196 

第13章應用案例實現199 
13.1解析簡單公式199 
13.2匹配漢字200 
13.3多表全外連接的問題202 
13.4根據傳入條件返回不同列中的數據203 
13.5拆分字符串進行連接205 
13.6用“行轉列”來得到隱含信息206 
13.7用隱藏數據進行行轉列208 
13.8用正則表達式提取clob裡的文本格式記錄集210 

第14章改寫調優案例分享212 
14.1為什麼不建議使用標量子查詢212 
14.2用LEFT JOIN優化標量子查詢215 
14.3用LEFT JOIN優化標量子查詢之聚合改寫216 
14.4用LEFT JOIN及行轉列優化標量子查詢217 
14.5標量中有ROWNUM=1 218 
14.6 ROWNUM=1引起的邏輯問題219 
14.7標量中有不等關聯時改寫的問題222 
14.8標量中有聚合函數時改寫的問題226 
14.9用分析函數優化標量子查詢(一) 229 
14.10用分析函數優化標量子查詢(二) 231 
14.11用分析函數優化標量子查詢(三) 233
14.12標量中的樹形查詢235 
14.13使用標量子查詢優化取最值語句238 
14.14用MERGE改寫優化UPDATE 240 
14.15 UPDATE中有ROWNUM=1 243 
14.16用MERGE使用左聯245 
14.17用MERGE改寫UPDATE之多個子查詢249 
14.18將UPDATE改寫為MERGE時遇到的問題251 
14.19通過分頁方式優化最值語句254 
14.20讓分頁語句走正確的PLAN 256 
14.21去掉分頁查詢中的DISTINCT 257 
14.22優化有GROUP BY的分頁語句261 
14.23用WITH語句優化查詢264 
14.24用WITH輔助把OR改為UNION 265 
14.25錯誤的WITH改寫269 
14.26錯誤的分析函數用法272 
14.27用LEFT JOIN優化多個子查詢(一) 274 
14.28用LEFT JOIN優化多個子查詢(二) 278 
14.29用LEFT JOIN優化多個子查詢(三) 280 
14.30去掉由EXISTS引起的FILTER 283 
14.31巧改驅動表提升效率284 
14.32用分析函數更改反連接286 
14.33集合判斷288 
14.34相等集合判斷289
14.35用分析函數改寫最值過濾條件291 
14.36用樹形查詢找指定級別的數據292 
14.37行轉列與列轉行293 
14.38 UPDATE、ROW_NUMBER與MERGE 295 
14.39一個UPDATE語句的優化298 
14.40自定義函數對速度的影響302 
14.41糾結的MERGE語句305 
14.42用CASE WHEN去掉UNION ALL 308 
14.43不恰當的WITH及標量子查詢320 
14.44用分析函數加“行轉列”來優化標量子查詢323 
14.45用分析函數處理問題326 
14.46用列轉行改寫A表多列關聯B表同列329 
14.47用分析函數改寫最值語句332 
14.48多列關聯的半連接與索引334 
14.49巧用分析函數優化自關聯335 
14.50糾結的UPDATE語句340 
14.51巧用JOIN條件合併UNION ALL語句342 
14.52用分析函數去掉NOT IN 345 
14.53讀懂查詢中的需求之裁剪語句349 
14.54去掉FILTER裡的EXISTS之活學活用350