2012-05-30 4 views
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 секунд ..

Как я иду ускорить это?

+0

Вы забыли опубликовать "запрос без соединения". – Quassnoi

+0

Каждый вопрос о производительности запросов должен начинаться с 1) EXPLAIN 2) Все описания зависимых таблиц. – zerkms

+0

У вас есть несколько учетных записей твиттера и/или facebook на 'user_id'? – Quassnoi

ответ

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) 
Смежные вопросы