Oracle查詢最佳化改寫技巧與案例

Oracle查詢最佳化改寫技巧與案例

《Oracle查詢最佳化改寫技巧與案例》是2015年電子工業大學出版社出版的圖書,作者是有教無類、落落。

基本介紹

  • 中文名:Oracle查詢最佳化改寫技巧與案例
  • 作者:有教無類,落落
  • 出版社: 電子工業出版社
  • 出版時間:2015年1月
  • 頁數:412 頁
  • 定價:69 元 
  • 開本:16 開
  • ISBN:9787121247101
  • 字 數:520千
內容簡介,圖書目錄,

內容簡介

本書不講具體語法,只是以案例的形式介紹各種查詢語句的用法。第 1~4 章是基礎部分,講述了 常用的各種基礎語句,以及常見的錯誤和正確語句的寫法。這部分的內容應熟練掌握,因為日常查詢 和最佳化改寫都要用到。第 5~12 章是提高部分,講解了正則表達式、分析函式、樹形查詢及匯總函式 的用法。這部分知識常用於對一些複雜需求的實現及最佳化改寫。最後兩章介紹日常的最佳化改寫案例。 這部分是前面所學知識的擴展套用。

圖書目錄

第 1 章 單表查詢 1
1.1 查詢表中所有的行與列 1
1.2 從表中檢索部分行 2
1.3 查找空值 3
1.4 將空值轉換為實際值 4
1.5 查找滿足多個條件的行 5
1.6 從表中檢索部分列 6
1.7 為列取有意義的名稱 6
1.8 在 WHERE 子句中引用取別名的列 7
1.9 拼接列 7
1.10 在 SELECT 語句中使用條件邏輯 8
1.11 限制返回的行數 10
1.12 從表中隨機返回 n 條記錄 10
1.13 模糊查詢 12
第 2 章 給查詢結果排序 14
2.1 以指定的次序返回查詢結果 14
2.2 按多個欄位排序 16
2.3 按子串排序 16
2.4 TRANSLATE 17
2.5 按數字和字母混合字元串中的字母排序19
2.6 處理排序空值20
2.7 根據條件取不同列中的值來排序21
第 3 章 操作多個表23
3.1 UNION ALL 與空字元串 23
3.2 UNION 與 OR 24
3.3 組合相關的行31
3.4 IN、EXISTS 和 INNER JOIN 31
3.5 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 解析 34
3.6 自關聯37
3.7 NOT IN、NOT EXISTS 和 LEFT JOIN 38
3.8 外連線中的條件不要亂放41
3.9 檢測兩個表中的數據及對應數據的條數是否相同45
3.10 聚集與內連線 46
3.11 聚集與外連線 50
3.12 從多個表中返回丟失的數據 50
3.13 多表查詢時的空值處理 53
第 4 章 插入、更新與刪除55
4.1 插入新記錄55
4.2 阻止對某幾列插入56
4.3 複製表的定義及數據57
4.4 用 WITH CHECK OPTION 限制數據錄入 57
4.5 多表插入語句58
4.6 用其他表中的值更新62
4.7 合併記錄67
4.8 刪除違反參照完整性的記錄70
4.9 刪除名稱重複的記錄71
第 5 章 使用字元串74
5.1 遍歷字元串74
5.2 字元串文字中包含引號76
5.3 計算字元在字元串中出現的次數77
5.4 從字元串中刪除不需要的字元78
5.5 將字元和數字數據分離79
5.6 查詢只包含字母或數字型的數據80
5.7 提取姓名的大寫首字母縮寫85
5.8 按字元串中的數值排序87
5.9 根據表中的行創建一個分隔列表88
5.10 提取第 n 個分隔的子串 88
5.11 分解 IP 地址 90
5.12 將分隔數據轉換為多值 IN 列表 90
5.13 按字母順序排列字元串 91
5.14 判別可作為數值的字元串 94
第 6 章 使用數字100
6.1 常用聚集函式100
6.2 生成累計和102
6.3 計算累計差106
6.4 更改累計和的值108
6.5 返回各部門工資排名前三位的員工110
6.6 計算出現次數最多的值111
6.7 返回最值所在行數據113
6.8 first_value 116
6.9 求總和的百分比119
第 7 章 日期運算122
7.1 加減日、月、年122
7.2 加減時、分、秒123
7.3 日期間隔之時、分、秒124
7.4 日期間隔之日、月、年124
7.5 確定兩個日期之間的工作天數124
7.6 計算一年中周內各日期的次數127
7.7 確定當前記錄和下一條記錄之間相差的天數129
第 8 章 日期操作131
8.1 SYSDATE 能得到的信息131
8.2 INTERVAL 134
8.3 EXTRACT135
8.4 確定一年是否為閏年137
8.5 周的計算138
8.6 確定一年內屬於周內某一天的所有日期139
8.7 確定某月內第一個和最後一個“周內某天”的日期140
8.8 創建本月日曆141
8.9 全年日曆142
8.10 確定指定年份季度的開始日期和結束日期 145
8.11 補充範圍內丟失的值 145
8.12 按照給定的時間單位進行查找 147
8.13 使用日期的特殊部分比較記錄 148
8.14 識別重疊的日期範圍 149
8.15 按指定間隔匯總數據 152
第 9 章 範圍處理155
9.1 定位連續值的範圍155
9.2 查找同一組或分區中行之間的差157
9.3 定位連續值範圍的開始點和結束點159
9.4 合併時間段164
第 10 章 高級查找 168
10.1 給結果集分頁 168
10.2 重新生成房間號 170
10.3 跳過表中 n 行 173
10.4 排列組合去重 174
10.5 找到包含最大值和最小值的記錄 176
第 11 章 報表和數據倉庫運算 179
11.1 行轉列 179
11.2 列轉行 184
11.3 將結果集反向轉置為一列 188
11.4 抑制結果集中的重複值 190
11.5 利用“行轉列”進行計算 191
11.6 給數據分組 192
11.7 對數據分組 195
11.8 計算簡單的小計 195
11.9 判別非小計的行 198
11.10 計算所有表達式組合的小計 201
11.11 人員在工作間的分布 203
11.12 創建稀疏矩陣 204
11.13 對不同組/分區同時實現聚集 208
11.14 對移動範圍的值進行聚集 209
11.15 常用分析函式開窗講解 212
11.16 listagg 與小九九 215
第 12 章 分層查詢 217
12.1 簡單的樹形查詢 217
12.2 根節點、分支節點、葉子節點 218
12.3 sys_connect_by_path 219
12.4 樹形查詢中的排序 220
12.5 樹形查詢中的 WHERE 221
12.6 查詢樹形的一個分支 222
12.7 剪去一個分支 223
12.8 欄位內 list 值去重 224
第 13 章 套用案例實現 227
13.1 從不固定位置提取字元串的元素 227
13.2 搜尋字母數字混合的字元串 230
13.3 把結果分級並轉為列 230
13.4 構建基礎數據的重要性 234
13.5 根據傳入條件返回不同列中的數據 235
13.6 拆分字元串進行連線 237
13.7 整理垃圾數據 238
13.8 用“行轉列”來得到隱含信息 243
13.9 用隱藏數據進行行轉列 245
13.10 用正則表達式提取 clob 里的文本格式記錄集 247
第 14 章 改寫調優案例分享 249
14.1 為什麼不建議使用標量子查詢 249
14.2 用 LEFT JOIN 最佳化標量子查詢 252
14.3 用 LEFT JOIN 最佳化標量子查詢之聚合改寫 252
14.4 用 LEFT JOIN 及行轉列最佳化標量子查詢 255
14.5 標量中有 ROWNUM =1 257
14.6 不等連線的標量子查詢改寫(一) 259
14.7 不等連線的標量子查詢改寫(二) 262
14.8 標量子查詢與改寫邏輯的一致性 267
14.9 用分析函式最佳化標量子查詢(一) 269
14.10 用分析函式最佳化標量子查詢(二) 271
14.11 用分析函式最佳化標量子查詢(三) 274
14.12 用分析函式最佳化標量子查詢(四) 277
14.13 用 MERGE 改寫最佳化 UPDATE 281
14.14 用 MERGE 改寫有聚合操作的 UPDATE(一) 283
14.15 用 MERGE 改寫有聚合操作的 UPDATE(二) 286
14.16 用 MERGE 改寫 UPDATE 之多個子查詢(一) 287
14.17 用 MERGE 改寫 UPDATE 之多個子查詢(二) 288
14.18 UPDATE 改寫為 MERGE 時遇到的問題 291
14.19 整理最佳化分頁語句 294
14.20 讓分頁語句走正確的 PLAN 296
14.21 去掉分頁查詢中的 DISTINCT 297
14.22 用 WITH 語句減少自關聯 300
14.23 用 WITH 改寫最佳化查詢 303
14.24 用 WITH 把 OR 改為 UNION 308
14.25 錯誤的 WITH 改寫 312
14.26 錯誤的分析函式用法 315
14.27 用 LEFT JOIN 最佳化多個子查詢(一) 317
14.28 用 LEFT JOIN 最佳化多個子查詢(二) 320
14.29 用 LEFT JOIN 最佳化多個子查詢(三) 322
14.30 去掉 EXISTS 引起的 FILTER 324
14.31 重疊時間計數 325
14.32 用分析函式改寫最佳化 328
14.33 相等集合之零件供應商 334
14.34 相等集合之飛機棚與飛行員 335
14.35 用分析函式改寫最值過濾條件 338
14.36 用樹形查詢找指定級別的數據 339
14.37 行轉列與列轉行 340
14.38 UPDATE、ROW_NUMBER 與 MERGE 343
14.39 改寫最佳化 UPDATE 語句 345
14.40 改寫最佳化 UNION ALL 語句 347
14.41 糾結的 MERGE 語句 349
14.42 用 CASE WHEN 去掉 UNION ALL 351
14.43 不恰當的 WITH 及標量子查詢 364
14.44 用分析函式加“行轉列”來最佳化標量子查詢 366
14.45 用分析函式處理問題 369
14.46 用列轉行改寫 A 表多列關聯 B 表同列 372
14.47 用分析函式改寫最值語句 375
14.48 多列關聯的半連線與索引 377
14.49 巧用分析函式最佳化自關聯 378
14.50 糾結的 UPDATE 語句 383
14.51 巧用 JOIN 條件合併 UNION ALL 語句 385
14.52 用分析函式去掉 NOT IN 388
14.53 讀懂查詢中的需求之裁剪語句 392
14.54 去掉 FILTER 里的 EXISTS 之活學活用 393

熱門詞條

聯絡我們