Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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
Mysql 加快sql查询并修复联接_Mysql_Sql - Fatal编程技术网

Mysql 加快sql查询并修复联接

Mysql 加快sql查询并修复联接,mysql,sql,Mysql,Sql,我有下面的查询,它列出了所有与facebook帐户匹配的帐户-问题是,facebook表中有时有多行与连接匹配,然后我们会返回重复的行,即使ac.id AS id应该是唯一的主键 SELECT ac.id AS id , ac.first_name , ac.last_name , ac.email , ac.company_name , upd8r_facebook_accts.id AS fb FROM upd8r_user_accts ac LEFT

我有下面的查询,它列出了所有与facebook帐户匹配的帐户-问题是,facebook表中有时有多行与连接匹配,然后我们会返回重复的行,即使ac.id AS id应该是唯一的主键

SELECT ac.id AS id
    , ac.first_name
    , ac.last_name
    , ac.email
    , ac.company_name
    , upd8r_facebook_accts.id AS fb
FROM upd8r_user_accts ac
LEFT OUTER JOIN upd8r_facebook_accts 
    ON ac.id = upd8r_facebook_accts.user_id
WHERE ac.`rfid` =  ''
AND ac.last_name !=  ''
AND ac.`owner_id` =  '121'
ORDER BY ac.`last_name` ASC 
有两个问题是返回了重复的行(我认为当facebook表中有多行与upd8r\u用户\u accts.id匹配时会出现这种情况。查询需要10秒才能运行……我在upd8r\u用户\u accts.id上有一个索引,我认为这可能会有所帮助,但它没有提示:

  • on
    WHERE

  • 更改
    选择
    方法
    选择直线连接


由于upd8r\u user\u accts.id是主键,因此在该列中添加索引将无助于解决问题,而且是多余的。 查询结果表明某些用户有多个facebook帐户。 如果id列不正确,则不说明数据类型,但可以尝试以下操作

SELECT ac.id AS id, ac.first_name, ac.last_name, ac.email, ac.company_name, upd8r_facebook_accts.id AS fb
FROM upd8r_user_accts ac
LEFT OUTER JOIN upd8r_facebook_accts ON ac.id = upd8r_facebook_accts.user_id
WHERE ac.`rfid` =  ''
AND ac.last_name !=  ''
AND ac.`owner_id` =  '121'
AND upd8r_facebook_accts.id = (SELECT MAX(ufa.id) FROM upd8r_facebook_accts ufa WHERE ufa.user_id = ac.id)
ORDER BY ac.`last_name` ASC
这样做的效果是每个用户只显示一行,但请记住,它删除的行可能不是您希望从结果中删除的行。
它还假设您可以在Id列上执行MAX功能。

请尝试upd8r\u facebook\u accts.user\u Id字段上的GROUP BY。索引应位于外键upd8r\u user\u accts.user\u Id上。此外,您的速度问题可能与rfid、owner\u Id和last\u name字段有关,您甚至可以在这些字段上订购。您可以向我们显示执行计划吗?(使用EXPLAIN infront运行查询)