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条记录。这是有意的吗?如果没有,您希望返回哪个帐户?