postgresql 我要优化查询-sql

r1wp621o  于 2023-06-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(117)

由于数据库中有大量数据,查询不起作用,我需要将一层的值与另一层的值进行比较,找到新层中没有的值。

这是我的问题:

select distinct id_gs,nmbr_tusa
from "NEW_SLOY"."SHILPU"
where date_contract  >= '2023-05-01'
and id_gs not in(select id_gs from "OLD_SLOY"."SHILPU")
mzmfm0qo

mzmfm0qo1#

可以使用left join代替子查询。

SELECT DISTINCT N.id_gs, N.nmbr_tusa
FROM "NEW_SLOY"."SHILPU" N
LEFT JOIN "OLD_SLOY"."SHILPU" O
ON N.id_gs = O.id_gs
WHERE N.date_contract >= '2023-05-01'
AND O.id_gs IS NULL;

当子查询中有很多行时。它将主查询中的每一行与子查询中的每一行进行比较。这导致了大量的比较。
你可以在这里阅读更多关于left join
https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-left-join/

相关问题