我遇到此应用程序的性能问题。基本上我有三张桌子:
tblmembers:memberid,memberemail
tbltalks:talkid,talkdate,talknote
tblmemberstalks:id,memberid,talkid
表成员包含成员列表
表呼叫商店讲话/会议会谈列表
表成员存储将在特定会议上发言的成员列表。
现在从我的前端(CMS),我想管理谁将在会议中发言(添加/删除成员)。目前有1009名会员。在目前的方法中,我获得了第一个注册在会议上发言的成员名单,这样他们就可以被删除,并获得另一个查询,以获得尚未添加为发言人的成员名单,以便他们可以注册。
基本上,我正在浏览成员表并检查每个成员的tblmemberstalks
。有没有更好的改进方法,因为参与者的数量会逐渐增加。
$registered="SELECT memberid,memberemail from tblmembers WHERE memberid IN (SELECT memberid FROM tblmemberstalks where talkid=1)";
$unregisterd="SELECT memberid,memberemail from tblmembers WHERE memberid NOT IN (SELECT memberid FROM tblmemberstalks where talkid=1)";
答案 0 :(得分:0)
使用LEAND JOIN WITH条件并检查UNREGISTRED的空入口
SELECT
case when mt.memberid is not null then 'registered' else 'not-registered' end as registration_status,
m.memberemail
from tblmembers m
LEFT JOIN tblmemberstalks mt ON (mt.member_id=m.id AND mt.talkid=1)