1

ウェブサイトの読み込みを速くするためにクエリを最適化しようとしています

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 秒で実行されます。

これを高速化するにはどうすればよいですか?

4

1 に答える 1

1
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)
于 2012-05-30T09:16:18.433 に答える