Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询操作方法慢_Php_Mysql - Fatal编程技术网

Php 查询操作方法慢

Php 查询操作方法慢,php,mysql,Php,Mysql,此应用程序存在性能问题。基本上我有三张桌子: TBL成员:成员ID、成员电子邮件 tbltalks:talkid、talkdate、talknote tblmemberstalks:id、memberid、talkid 表成员包含成员列表 Table calls存储发言/会议谈话列表 TableMembersTalks存储将在特定会议上发言的成员列表 现在从我的前端(CMS),我想管理谁将在会议上发言(添加/删除成员)。目前有1009名成员。在当前的方法中,我将获取第一个已注册在会议上发言的成员

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

TBL成员:成员ID、成员电子邮件
tbltalks:talkid、talkdate、talknote
tblmemberstalks:id、memberid、talkid

表成员包含成员列表
Table calls存储发言/会议谈话列表
TableMembersTalks存储将在特定会议上发言的成员列表

现在从我的前端(CMS),我想管理谁将在会议上发言(添加/删除成员)。目前有1009名成员。在当前的方法中,我将获取第一个已注册在会议上发言的成员列表,以便将其删除,并通过另一个查询获取尚未添加为发言者的成员列表,以便注册

基本上,我正在检查members表,并为每个成员检查
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)";
使用LEFT JOIN WITH CONDITION并检查NULL条目是否为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)