由于数据库中有很多数据,查询不起作用,我需要比较来自一个层和另一个层的值,从新层中找到那些不在旧层中的值.

THIS IS MY QUERY:

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")

推荐答案

您可以使用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;

当子查询中有很多行时.它将主查询中的每一行与子查询中的每一行进行比较.这导致了大量的比较.

you can read more about left join here:
https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-left-join/

Postgresql相关问答推荐

PostgreSQL:`row_alias为null`且`row_alias不是null`返回值不一致

如何在PostgreSQL中正确删除数据库

在Postgres游标中从一行变量中减go 另一行变量

返回行值和行计数的总和

Postgres数据库系统已准备好接受连接和docker compose

gorm 不生成字符串列

PostgreSQL - 列出模式中的所有唯一约束

如何将 JSONB 对象数组合并为 PostgreSQL 中的单个对象

Regexp_replace 行为会改变,如果它用空白字符串或 null 替换字符串数组中的字符串

将 postgres 从属提升为主 node

Postgres 唯一 JSON 数组聚合值

如何在 Sequelize ORM 中插入 PostGIS GEOMETRY 点?

如何从元组列表中 Select 与多列匹配的行?

Select 日期最高的行

sql语句错误:column .. does not exist

Postgres UPDATE with ORDER BY,怎么做?

如何使用 psql 命令列出、创建、使用和判断数据库?

如何将参数值添加到 pgadmin sql 查询?

如何为 Postgres psql 设置时区?

如何获取一个月的天数?