Mysql 参加演出

Mysql 参加演出,mysql,sql,performance,Mysql,Sql,Performance,我试图优化我的查询,使网站加载更快 SELECT ac.id as id, ac.first_name, ac.last_name, ac.email, ac.company_name, upd8r_twitter_accts.id as twitter, upd8r_facebook_accts.id as facebook FROM upd8r_user_accts ac LEFT OUTER JOIN upd8r_twitter_accts ON ac.id = upd8r_twit

我试图优化我的查询,使网站加载更快

SELECT ac.id as id, ac.first_name, ac.last_name, ac.email, ac.company_name, upd8r_twitter_accts.id as twitter, upd8r_facebook_accts.id as facebook 
FROM upd8r_user_accts ac  
LEFT OUTER JOIN upd8r_twitter_accts ON ac.id = upd8r_twitter_accts.user_id 
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` = '114' 
ORDER BY ac.`last_name` asc 
如果没有联接,查询将在0.0001秒内运行,但是如果有联接,查询将在0.3432秒内运行

我该如何加快速度呢

SELECT  ac.id as id, ac.first_name, ac.last_name, ac.email, ac.company_name,
        (
        SELECT  id
        FROM    upd8r_twitter_accts
        WHERE   upd8r_twitter_accts.user_id = ac.id
        ORDER BY
                id
        LIMIT 1
        ) twitter,
        (
        SELECT  id
        FROM    upd8r_facebook_accts
        WHERE   upd8r_facebook_accts.user_id = ac.id
        ORDER BY
                id
        LIMIT 1
        ) facebook
FROM    upd8r_user_accts ac
WHERE   ac.`rfid` = ''
        AND ac.`owner_id` = '114'
        AND ac.last_name > ''
ORDER BY
        ac.`last_name` asc
创建以下索引:

upd8r_user_accts (rfid, owner_id, last_name)
upd8r_twitter_accts (user_id, id)
upd8r_facebook_accts (user_id, id)
创建以下索引:

upd8r_user_accts (rfid, owner_id, last_name)
upd8r_twitter_accts (user_id, id)
upd8r_facebook_accts (user_id, id)

你忘了发布“没有连接的查询”。关于查询性能的每个问题都应该从1)解释2)所有依赖表的描述开始。每个
用户id
可以有多个twitter和/或facebook帐户吗?哎呀。。您没有fb或twitter的帐户,或者您可能有多个帐户-加入的原因是显示用户已经完成了每个帐户的身份验证过程networks@Chris:当前,如果用户有2个twitter帐户和3个facebook帐户,则查询将返回6条记录。这是有意的吗?如果没有,您希望返回哪个帐户?您忘了发布“没有连接的查询”。关于查询性能的每个问题都应该从1)解释2)所有相关表的描述开始。每个
用户id
可以有多个twitter和/或facebook帐户吗?哎呀。。您没有fb或twitter的帐户,或者您可能有多个帐户-加入的原因是显示用户已经完成了每个帐户的身份验证过程networks@Chris:当前,如果用户有2个twitter帐户和3个facebook帐户,则查询将返回6条记录。这是有意的吗?如果没有,您希望返回哪个帐户?