查询操作方法慢

时间:2017-02-06 22:16:07

标签: php mysql

我遇到此应用程序的性能问题。基本上我有三张桌子:

  

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)";

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)