首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据对比查询,如何优化呢?

数据对比查询,如何优化呢?
EN

Stack Overflow用户
提问于 2020-09-03 04:50:32
回答 2查看 41关注 0票数 0

我在Postgresql中的两个表之间做了一个比较,逐行寻找差异以将其保存到另一个表中,但我想知道是否有其他方法可以做到这一点,或者我如何优化它:

代码语言:javascript
复制
insert into changes
select 
daily2.id_registro 
from daily2 
inner join 
daily on daily2.id_registro = daily.id_registro
where
daily2.fecha_ingreso!=daily.fecha_ingreso
or
daily2.fecha_sintomas!=daily.fecha_sintomas
or
daily2.fecha_def!=daily.fecha_def
or
daily2.intubado!=daily.intubado
or
daily2.neumonia!=daily.neumonia
or
daily2.diabetes!=daily.diabetes
or
daily2.epoc!=daily.epoc
or
daily2.asma!=daily.asma
or
daily2.inmusupr!=daily.inmusupr
or
daily2.hipertension!=daily.hipertension
or
daily2.otra_com!=daily.otra_com
or
daily2.cardiovascular!=daily.cardiovascular
or
daily2.obesidad!=daily.obesidad
or
daily2.renal_cronica!=daily.renal_cronica
or
daily2.tabaquismo!=daily.tabaquismo
or
daily2.otro_caso!=daily.otro_caso
or
daily2.resultado!=daily.resultado
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-03 05:19:11

如果您知道每个id都有一个匹配项,那么您只需:

代码语言:javascript
复制
insert into changes
select id_registro from 
(
    select * from daily2 
    except
    select * from daily
) as a

这样你就不需要写每一列了。

如果您需要确保id在两个表中,您只需添加一个检查,以查看id是否在两个表中:

代码语言:javascript
复制
insert into changes
select id_registro from 
(
    select * from daily2 
    except
    select * from daily
) as a
where a.id_registro in
(
    select daily2.id_registro
    from daily inner join daily2
    on daily.id_registro = daily2.id_registro 
);

这是相当重的,所以在巨型桌子上要小心。

票数 1
EN

Stack Overflow用户

发布于 2020-09-03 04:57:05

你想要元组相等吗?

代码语言:javascript
复制
where
    (daily2.fecha_ingreso, daily2.fecha_sintomas, daily2.fecha_def, ...) 
    <> (daily.fecha_ingreso, daily.fecha_sintomas, daily.fecha_def, ...)

我想知道整个查询是否可以用exists更有效地表达

代码语言:javascript
复制
insert into changes (id_registro)
select d2.id_registro 
from daily2 d2
where exists (
    select 1
    from daily d
    where 
        d1.id_registro = d.id_registro
        and (d2.fecha_ingreso, d2.fecha_sintomas, d2.fecha_def, ...) 
         <> (d.fecha_ingreso, d.fecha_sintomas, d.fecha_def, ...)
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63713364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档