如何實現最佳化的點陣圖篩選?
點陣圖篩選只有在它具有選擇性時才有效。查詢最佳化器會決定最佳化後的點陣圖篩選是否足夠具有選擇性以使其有幫助,以及該篩選器可以用於哪些運算子。最佳化器對星形連線的所有部門設定最佳化後的點陣圖篩選,並使用成本規則來確定該計劃是否支援最小的開銷成本。
當最佳化後的點陣圖篩選不具有選擇性時,成本估算通常過高,並且該計劃會被否決。在考慮在計劃中放置最佳化後的點陣圖篩選時,最佳化器關於雜湊連線變數的檢視包括一個雜湊連線的右側深度棧。連線維度表的目的是首先執行可能具有最高選擇性的連線。
其中使用最佳化的點陣圖篩選的運算子在 PROBE([Opt_Bitmap1001], {[column_name]} [, ‘IN ROW’]) 的設計中包括點陣圖謂詞。點陣圖謂詞報告以下資料
關聯到點陣圖運算子中引入名稱的點陣圖名稱。字首“Opt_”表示使用了最佳化的點陣圖篩選。
相反探測的列。這是經過樹的過濾資料流經的術語。
點陣圖探測是否需要行內最佳化。如果是,則在呼叫點陣圖探測時會啟用 IN ROW 引數。而當不是時,則此引數不存在。
最佳化的點陣圖篩選要求
最佳化的點陣圖篩選具有以下要求 -
預計事實表擁有至少 100 頁。最佳化器會將較小的表視為維度表。
僅考慮事實表和維度表之間的內部連線。
事實表和維度表之間的連線謂詞應是單列連線,但不要求是主鍵到外部索引鍵的關係。已選擇一個基於整數的列。
只有當維度輸入基數小於來自事實表的輸入基數時,才處理與維度的連線。
透過使用點陣圖顯示計劃操作員在查詢計劃中執行點陣圖篩選和最佳化點陣圖篩選。只有使用雜湊或合併連線的並行查詢計劃中才使用點陣圖篩選。最佳化後的點陣圖篩選僅與使用雜湊連線的並行查詢計劃相關。
在這兩種情況下,點陣圖篩選器都會在雜湊連線的構建輸入(維度表)端生成;但是,實際篩選通常在並行運算子中完成,該運算子位於雜湊連線的探測輸入(事實表)端上。當連線基於整數列時,可以將篩選器直接用於原始表或索引掃描操作,而不是並行運算子。此技術稱為行內最佳化。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP