请教一个SQL优化的问题
问题描述
有一个member(会员表)和一个member_store(会员入会店铺表);member表存的是会员信息,member_store表存的是同一个会员在不同店铺的入会记录,有3个字段member_id(member表主键)、store_id(店铺id)、register_time(店铺注册时间);后台需要根据账号拥有的店铺权限来展示会员列表;所以现在的sql是这样的:
select m.* from member as m inner join member_store as ms on m.id=ms.member_id where ms.store_id in(1,2,3) group by m.id
一般一个后台账号会有十几个店铺的权限,当会员数量达到百万级后这条sql就会很慢;该加的索引都加了,因为必须要做数据权限的隔离,所以必须得关联member_store表;但是关联了之后就要group by来去重;就导致sql执行很慢。想问一下大家处理这种权限隔离除了用关联表来where in查询,还有没有其他处理方法
谢谢大家提供了很多思路,领导已经准备换clickhouse了,此贴终结。