小编use*_*665的帖子

MERGE表,匹配时什么也不做

我在2个不同的模式中有一个表DOMAINS,其中包含列ID,NAME,CODE,DESCRIPTION.

对于新架构中存在的任何NAME,它应该使用现有ID而不进行任何合并; 对于那些新的NAME记录,它应该使用旧架构的ID插入.

MERGE INTO DOMAINS A
USING (SELECT ID,NAME,CODE,DESCRIPTION FROM <Old Schema 6.1>.DOMAINS@DB_MIG_61_TO_74) B
ON(A.NAME = B.NAME)
WHEN MATCHED **<do nothing>**
WHEN NOT MATCHED THEN INSERT(A.ID,A.NAME,A.CODE,A.DESCRIPTION) 
VALUES(B.ID,B.NAME,B.CODE,B.DESCRIPTION);
Run Code Online (Sandbox Code Playgroud)

我如何解释上述查询中"无所事事"的部分?

sql oracle merge match sql-merge

6
推荐指数
2
解决办法
9178
查看次数

Oracle SQL EXPLAIN PLAN - 全表访问

我有一个连接了 5 个表的查询,它的执行时间约为 0.2 秒,从我的数据库中检索 36 条记录。下面附上解释计划的分析,可以看到即使那些已经带有索引的表仍然会发生全表访问。

Exlpian计划

无论如何,如果有必要按如下方式微调查询?

SELECT 

  CASE WHEN DS.NAME = 'InteractiveCustomer' THEN 'NA' ELSE CUS.SOURCE_SYSTEM END AS SOURCE_SYSTEM, 
  OU.ORGUNIT_CODE AS ORGANIZATION_UNITS, 
  SUM(
    CASE WHEN WS.NAME = 'Pending Autoclosure' THEN 1 ELSE 0 END
  ) AS PENDING_AUTOCLOSURE, 
  SUM(
    CASE WHEN WS.NAME = 'New' THEN 1 ELSE 0 END
  ) AS NEW, 
  SUM(
    CASE WHEN WS.NAME = 'Under Investigation' THEN 1 ELSE 0 END
  ) AS UNDER_INVESTIGATION, 
  SUM(
    CASE WHEN WS.NAME = 'Escalated' THEN 1 ELSE 0 END
  ) …
Run Code Online (Sandbox Code Playgroud)

sql oracle sql-execution-plan

0
推荐指数
1
解决办法
2万
查看次数

标签 统计

oracle ×2

sql ×2

match ×1

merge ×1

sql-execution-plan ×1

sql-merge ×1