ORACLE sql merge into update where條件位置與效能消耗
環境:
作業系統版本:linux redhat 6.6
資料庫版本:oracle 11.2.0.4
問題描述:今天,實施同事反饋一個很奇怪的問題,就是oracle 資料庫的sql merge用法問題,update語句當把分割槽表的分割槽鍵放在匹配關鍵字
On裡,sql語句執行計劃顯示分割槽鍵能起到分割槽篩選作用:
相反的,如果把update語句where條件裡的分割槽鍵不放在merge匹配關鍵字on裡,merge into update語句沒能正確執行分割槽表分割槽篩選,sql語句
和執行計劃如下:
總結:先說個人對本例子的理解,merge先執行on後邊的條件篩選,進而進行資料匹配,匹配上則執行後續的update更新操作,所以,
將分割槽鍵放在on後邊的條件匹配裡,首先進行區分表分割槽的篩選,避免對分割槽表的全分割槽掃描,從而大大降低merge into update語句
對主機cpu資源的消耗。
作業系統版本:linux redhat 6.6
資料庫版本:oracle 11.2.0.4
問題描述:今天,實施同事反饋一個很奇怪的問題,就是oracle 資料庫的sql merge用法問題,update語句當把分割槽表的分割槽鍵放在匹配關鍵字
On裡,sql語句執行計劃顯示分割槽鍵能起到分割槽篩選作用:
相反的,如果把update語句where條件裡的分割槽鍵不放在merge匹配關鍵字on裡,merge into update語句沒能正確執行分割槽表分割槽篩選,sql語句
和執行計劃如下:
總結:先說個人對本例子的理解,merge先執行on後邊的條件篩選,進而進行資料匹配,匹配上則執行後續的update更新操作,所以,
將分割槽鍵放在on後邊的條件匹配裡,首先進行區分表分割槽的篩選,避免對分割槽表的全分割槽掃描,從而大大降低merge into update語句
對主機cpu資源的消耗。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29357786/viewspace-2151988/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL中on條件與where條件的區別[轉]SQL
- MERGE新特性(UPDATE WHERE,DELETE WHERE,INSERT WHERE)delete
- LINQ系列:LINQ to SQL Where條件SQL
- switch拼接where條件
- 替代SQL語句WHERE條件中OR關鍵詞SQL
- 生產資料update沒加where條件(從執行到恢復)
- SQL中的where條件,在資料庫中提取與應用淺析SQL資料庫
- Merge into: Oracle中用一條SQL語句直接進行Insert/Update的操作(R1)OracleSQL
- connect by與where條件執行順序問題
- MySQL核心技術之“WHERE條件”MySql
- 【Oracle】where條件執行順序(上篇的問題延伸)Oracle
- Oracle中where子句中條件的物理執行順序Oracle
- sql server merge 做insert和updateSQLServer
- T-SQL——關於Join on的的連線條件和where的篩選條件的區分SQL
- 關於在SQL語句中ON和WHERE中條件使用的差異SQL
- 儲存過程WHERE條件不生效儲存過程
- 關於外連線和where條件
- ORACLE UPDATE 語句語法與效能分析Oracle
- Oracle 是分割槽表,但條件不帶分割槽條件的SQLOracleSQL
- PL/SQL 條件SQL
- mysql,where條件查詢等學習筆記MySql筆記
- MongoDB之資料查詢(where條件過濾)MongoDB
- 【SQL】SQL中if條件的使用SQL
- Percona MySQL 5.6 WHERE 條件中 OR 的索引測試MySql索引
- mysql where條件中 字串右邊的空格會忽略MySql字串
- 當long欄位在where條件裡的解決方案
- MYSQL學習筆記6: DQL條件查詢(where)MySql筆記
- ORACLE SQL過濾條件是IS NULL or !=的優化OracleSQLNull優化
- SQL Server 2008中SQL增強之三:Merge(在一條語句中使用Insert,Update,Delete)SQLServerdelete
- SQL join中on與where區別SQL
- Oracle SQL效能優化的40條軍規OracleSQL優化
- mysql 左連結 left join 條件寫在where 後面與 on後面的區別MySql
- where語句中多條件查詢欄位NULL與NOT NULL不確定性查詢Null
- SQL多條件查詢SQL
- 資料泵過濾匯出資料的where條件
- MySQL的where條件字串區分大小寫的問題MySql字串
- SQL Server的Merge —— 一步實現 insert,update,deleteSQLServerdelete
- 【SQL】Oracle SQL join on語句and和where使用區別SQLOracle