我有两个表,想统计一个表中的成员ID数,而另一表中的成员ID数。
plt.plot(df['data'],c='b')
for idx,row in out.iterrows():
x0 = np.datetime64(row['start'])
y0 = df.loc[x0]['data']
x1 = np.datetime64(row['end'])
y1 = df.loc[x1]['data']
plt.plot([x0,x1],[y0,y1],c='r')
这是永久的,不应该的。代码可以吗?
如果您有更有效的代码,请提出建议。
答案 0 :(得分:4)
我将其更改为not exists
并推荐一个索引:
select COUNT(DISTINCT u.member_id)
from database.tablea u
where not exists (select 1
from database.tableb b
where u.member_id = b.member_id
);
然后,您想要在tableb(member_id)
上建立索引。
如果您有members
表,那么您可能会发现最快的方法是:
select count(*)
from members m
where exists (select 1
from database.tablea u
where u.member_id = m.member_id
) and
not exists (select 1
from database.tableb b
where b.member_id = m.member_id
);
在tablea(member_id)
和tableb(member_id)
上使用索引,这应该很快。唯一的情况不是这样:members
中有成千上万的成员,tablea
中有相对较少的行。
答案 1 :(得分:0)
您应始终避免子查询,在大多数情况下,子查询的速度较慢。这应该更快:
select count(DISTINCT u.member_id) from database.tablea ua
left join database.tableb ub on
ua.member_id = ub.member_id
where ub.member_id is NULL