2017-02-06 101 views
0

我遇到此應用程序的性能問題。基本上我有三個表:查詢操作方法緩慢

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

使用留下了條件JOIN並檢查條目爲空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)