《海量資料庫解決方案》2011051901

2022-03-01 15:54:17 字數 1297 閱讀 6819

【摘抄】

表連線的最優化方案

表連線,這裡指狹義的join,是連線資料的最基本方法。

表連線方式:

a、巢狀迴圈表連線nested loops

既是最傳統的表連線方式,也是最普遍的表連線方式

通過優先許可權處理某個集合來從中獲取常量值,並利用該常量值去對應的集合中查詢滿足連線條件的對應行,所連線數量的多少會隨著表連線順序的不同而不同。

特徵:次序性

先行性從屬性

選擇性連線條件的狀態,方向性

允許區域性範圍掃瞄

過濾查詢條件的影響

為了決定表連線的順序,首先先應當做的是,在執行表連線的諸表中尋找位於最下層的集合。

b、排序合併表連線sort merge

最大特徵:

即使不從對應集合中獲取任何值,也能夠只憑藉自身所具有的條件實現決定查詢範圍的目的

它能夠在很大程度上減少隨機讀取次數

始終按照全部範圍掃瞄的方式進行處理

c、雜湊連線hash join

最大好處:擺脫了對海量資料處理造成最大負擔的隨機讀取和排序操作。

隨機讀取的代價主要是指:在最壞的情況下,為了讀取一行資料而需要從磁碟中將整個資料塊全部讀入。

排序操作的代價,指對記憶體造成了很大的負擔。小記憶體大排序。

build input

將為了連線而提前執行的讀取準備操作

probe input

在後來讀取的同時,所執行的連線操作

in-memory雜湊連線,在連線過程中完全沒有必要使用已經建立了的索引。再次允許區域性範圍掃瞄

延遲雜湊連線,在連線過程中完全沒有必要使用已經建立了的索引。但不允許區域性範圍掃瞄

d、半連線semi join

指與表連線非常相似的一種資料連線方法。即在使用了子查詢的情況下,所實現的子查詢與主查詢之間的連線

表連線和子查詢最本質的區別就在於集合間的從屬性上。集合之間的交換律是否成立

半連線的執行計畫:

1、巢狀迴圈型半連線

2、排序合併型半連線

3、過濾型半連線

常用關鍵字:exists

4、雜湊(hash)半連線

5、anti半連線:指在連線條件中使用not的連線型別

e、星型(star)連線

關鍵字:笛卡爾積

可想象下有多大的資料集

f、星變形(star transformation)連線

星變形連線可以使用位圖索引

g、位圖連線索引

如何理解這個名詞:最簡單的方法就是將連線所得結果集合視為乙個一般的表,然後再將點陣圖連線索引視為是基於該錶的列而建立的點陣圖索引。

《海量資料庫解決方案》2011051301

摘抄 表連線的最優化方案 反覆連線方式 之後用於連線 query 的sql要以以前從基表中所讀取的行為基準而被反覆 loop 執行 文中比較nested loops和反覆連線方式,結論是反覆連線方式類似nested loops,只是前者會出現沒有設計出正確的表連線方向 集合順序 而影響了join的速...

《海量資料庫解決方案》2011050301

摘抄 提高區域性範圍掃瞄執行速度的原理 書中提及乙個概念 無條件查詢,按字面理解就行了。如 select from tb 後面不帶任何查詢語句之類的。在書中所說,select from tb order by item 前者可能執行區域性範圍掃瞄,後者執行屬於全部範圍掃瞄 以上,針對的是oracle...

《海量資料庫解決方案》2011042601

摘抄 最優化資料讀取方案 此處僅涉及 區域性範圍掃瞄 partial range scan 表連線的最優化方案 所謂區域性範圍掃瞄,並不是指掃瞄滿足where條件的全部資料行,而是指只要掃瞄了陣列批量 array size,該詞的近似詞義翻譯為 運輸單位 的行數後立刻返回結果,在使用者再次提出輸出要...