【发布时间】:2018-02-24 15:57:32
【问题描述】:
下面是我的 SQL 代码:
select count(1)
from customers
where id in(
select custid
from accounts
where sid in(72,73,74,75,76,77,78,79)
)
and id not in(
select custid
from accounts
where sid in(80,81)
);
表格索引正确。能否重写此代码以获得更好的性能?
【问题讨论】:
-
请Edit您的问题并为有问题的表(包括所有索引)添加
create table语句,您正在使用的查询和使用生成的执行计划explain (analyze, verbose)。 Formatted text 请(确保保留缩进),no screen shots -
NOT IN条件可以被删除而不改变结果。请检查您的问题。 -
@PatrickHonorez - 按照我的阅读方式,给定的 id 可以在帐户表中有多行。如果该表中的 id 同时具有 sid = 72 和 sid = 80 的情况,则不应将其计算在内,因此需要 NOT IN
-
@kbball 知道了。有趣,很好,你澄清了它。
标签: sql postgresql