表連線概念(轉)
表連線概念
Hash join 它的連線方式﹐Oracle將第一個表加載入記憶體﹐使用一種Hash技 朮﹐連線第二個表. 顯然驅動表應該選擇兩者中的較小者。 因為CBO總是傾向於把HASH連線放在次要地位﹐我們可以用
USE_HASH提示﹐強制最佳化器使用HASH連線方式。由於HASH算 法的使用﹐索引的存在對效能的影響不是很大。
Nested loop
即巢狀迴圈連線﹐是一種是最基本的表連線方式﹐在巢狀迴圈 中﹐首先從驅動表讀取記錄﹐然後把結果集與第二個表進行比較 連線﹐如圖所示,這一切都是透過索引來進行的﹐如果沒有索引﹐ 連線成本會大大地增加。 在考慮連線順序時﹐應該把最小的表作為驅動表。 在內部表上建有可用的索引的時候﹐應該首先考慮使用Nested Loop。
Sort merge join 它不使用索引﹐它用全表掃描獲得兩個資料集合﹐然後將它們 分別排序後﹐合併成為一個最終的結果集。 注意到排序合併連線中並沒有使用索引是非常重要的。在大多數 情況下﹐透過索引訪問更快一些﹐但是當連線表中需要有大量資料 的處理和返回﹐大量的全表掃描﹐或者表上沒有建立索引的話﹐可 以考慮使用Sort merge join。
* 表連線最佳化例項
曾經在一個ERP維護中遇到過這樣一個典型問題﹐有一個比較 複雜的SQL﹐其中由多個關聯了十幾個大表的檢視JOIN而成﹐噝?一次花幾個小時的時間。後來經過仔細觀察執行計劃﹐發現最佳化器 在處理上述的幾個大的結果集關聯的時候﹐使用的是巢狀迴圈。眾 所周知﹐巢狀迴圈需要用到索引﹐否則效率會很低﹐而幾個資料集 關聯時是不可能有索引的﹐噝屑競
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12058779/viewspace-1018018/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 表連線概念
- 【SQL】表連線 --半連線SQL
- 表連線cost
- Oracle 表連線Oracle
- 表連線方法
- 兩表連線三:合併連線
- Oracle 表連線方式詳解(外連結、內連線、自連線)Oracle
- 微課sql最佳化(13)、表的連線方法(2)-基礎概念SQL
- 表連線型別型別
- ORACLE 表連線方式Oracle
- SQL 三表連線SQL
- 排序和表連線排序
- oracle表連線方式Oracle
- Oracle的表連線方法(三)雜湊連線Oracle
- 兩表連線一:巢狀迴圈連線巢狀
- Oracle的表連線方法(一)排序合併連線Oracle排序
- Oracle表連線操作——Hash Join(雜湊連線)下Oracle
- Oracle表連線操作——Hash Join(雜湊連線)上Oracle
- 使用表連線替代exists
- 【SQL 學習】表連線SQL
- 表與表之間連線式on,using以及自然連線的區別
- Oracle的表連線方法(二)巢狀迴圈連線Oracle巢狀
- [資料庫連線字串] Access 連線字串(轉)資料庫字串
- [資料庫連線字串]Access連線字串(轉)資料庫字串
- 【轉載】通訊長連線與短連線
- MySQL表連線及其優化MySql優化
- Mysql資料庫表連線MySql資料庫
- Oracle的表連線方法(七)Oracle
- Oracle的表連線方法(五)Oracle
- Oracle的表連線方法(六)Oracle
- oracle 各種表間連線Oracle
- 發表話題的連線
- 【SQL】表連線七種方式SQL
- SQL表連線方式詳解SQL
- 使用 jOOQ 連線兩個表
- Oracle表連線操作——Merge Sort Join(合併排序連線)Oracle排序
- 表的連線方式:NESTED LOOP、HASH JOIN、SORT MERGE JOIN(轉)OOP
- SQL 改寫系列十:半連線轉內連線SQL