0

我有一张有 100M 多行的表,看起来像这样

Create table member (
  id bigint,
  gender text,
  //..other fields
  primary key (id)
);

现在,性别字段有两个可能的值“M”“F”

每当我使用性别字段时,我都会花费很多时间在其他字段(例如 id、成员详细信息、手机号码)上建立索引

select 
count(1) filter (where mod.is_active and m.gender = 'M') as male,
count(1) filter (where mod.is_active and m.gender = 'F') as female
from member_other_details mod
inner join member m on m.id = mod.member_id

此查询需要数小时才能完成

我该如何优化呢?

4

1 回答 1

1

我个人会执行这个查询

select m.gender,count(*)
from member_other_details mod inner join member m on m.id = mod.member_id
where mod.is_active
group by m.gender
于 2021-05-07T10:55:16.037 回答