【发布时间】:2018-11-06 01:22:22
【问题描述】:
有人可以帮我调整这个查询,因为我是 Oracle 性能调整的新手。
INSERT INTO mdm_id_relation
SELECT
pat_key, hub_pat_id, msa_pat_id, pat_id
FROM
ods_raw_patient_mdm_process p1
WHERE NVL (pat_id, 'NULL') IN (SELECT pat_id
FROM mdm_id_relation)
AND NOT EXISTS (SELECT pat_key
FROM mdm_id_relation p2
WHERE p1.pat_key = p2.pat_key);
【问题讨论】:
-
为三个源表添加解释计划和表结构。
-
您可以先将 NVL(pat_id, 'NULL') 替换为 pat_id。然后可以使用 pat_id 上的索引(如果有的话)。
-
了解每个表中有多少行会很有帮助。有没有索引?目前需要多长时间?执行计划是什么?
xplanx.sql -
你能解释一下
NVL(pat_id, 'NULL')的原因吗?表mdm_id_relation中有字符串值NULL的值吗?SELECT count(*) FROM mdm_id_relation WHERE pat_id = 'NULL'
标签: sql database oracle performance