我有一個差值表,分區的日期和月份。我想合並數據,這在所有三個分區列+一個額外的列(ID)。我的merge語句如下:
合並成三角洲。<路徑δ表> oldData oldData上使用df newData。年= ' 2023 '和oldData。月=“10”和oldData。一天=“12”和oldData.clientid = newData。clientid當匹配然後刪除
當我做一個解釋在這個查詢我得到這個計劃:
= = = =物理計劃執行MergeIntoCommandEdge + - MergeIntoCommandEdge SubqueryAlias newData, SubqueryAlias oldData,δ(version = 4,……(((# 3761220 = 2023年)和# 3761221 = 10)(月)和((# 3761222 = 12天)和(clientid # 3761212 = clientid # 3761212)))
這個查詢運行很長一段時間考慮我認為數據我想過程是小(小於1 m)。還在此基礎上鏈接我應該看到某種提到物理分區的計劃,但我不喜歡。任何想法為什麼看起來我的merge語句不是執行merge語句時使用分區?
@Joceph莫雷諾:根據你提供的信息,看來你指定分區鍵在merge語句的條件。然而,您應該使用分區列在merge語句的使用條款。
Csn檢查以下是否適合你嗎?
合並成三角洲。<路徑δ表> oldData使用(SELECT *從df = =“10”和“2023”和月天= 12)newData oldData。clientid = newData。clientid當匹配然後刪除;
在這個例子中,分區列(年、月、日)使用子查詢中使用條款來過濾數據被合並。不包括分區列條件,因為他們已經被用來過濾數據。相反,clientid列用於新舊之間的條件相匹配的記錄數據。使用這種方法,合並操作應隻適用於包含篩選條件相匹配的數據分區的使用條款,這將提高性能。
請讓我們知道這有幫助。
@Joceph莫雷諾:根據你提供的信息,看來你指定分區鍵在merge語句的條件。然而,您應該使用分區列在merge語句的使用條款。
Csn檢查以下是否適合你嗎?
合並成三角洲。<路徑δ表> oldData使用(SELECT *從df = =“10”和“2023”和月天= 12)newData oldData。clientid = newData。clientid當匹配然後刪除;
在這個例子中,分區列(年、月、日)使用子查詢中使用條款來過濾數據被合並。不包括分區列條件,因為他們已經被用來過濾數據。相反,clientid列用於新舊之間的條件相匹配的記錄數據。使用這種方法,合並操作應隻適用於包含篩選條件相匹配的數據分區的使用條款,這將提高性能。
請讓我們知道這有幫助。