Как улучшить производительность Left Join Inner Join sql (mysql) - PullRequest
0 голосов
/ 19 октября 2011
SELECT SQL_CACHE se_media.* 
FROM se_media 
  LEFT JOIN se_albums 
    ON se_albums.album_id=se_media.media_album_id 
  LEFT JOIN se_users 
    ON se_albums.album_user_id=se_users.user_id 
  LEFT JOIN ( SELECT s1.media_id AS tableprimary 
               FROM se_media as s1 
               WHERE  s1.media_title 
               LIKE '%funny%' 
             ) AS tagobjects_1 
    ON se_media.media_id=tagobjects_1.tableprimary 
WHERE   media_date_created <= '1318949954' 
  AND media_search='1' 
ORDER BY media_date_created DESC 
LIMIT 0, 10 

500 сек

SELECT se_media.* 
FROM se_media 
  INNER JOIN se_albums 
    ON se_albums.album_id=se_media.media_album_id 
  INNER JOIN se_users 
    ON se_albums.album_user_id=se_users.user_id 
  INNER JOIN ( SELECT s1.media_id AS tableprimary 
               FROM se_media as s1 
               WHERE  s1.media_title 
               LIKE '%funny%' 
             ) AS tagobjects_1 
    ON se_media.media_id=tagobjects_1.tableprimary 
WHERE   media_date_created <= '1318949954' 
  AND media_search='1' 
ORDER BY media_date_created DESC 
LIMIT 0, 10 

-5 сек.

ПОЧЕМУ?

Я думал, что соединение слева быстрее, чем ВНУТРЕННЕЕ СОЕДИНЕНИЕ.

Как выполняется запрос?Какой заказ?Найти все строки, затем присоединиться, а затем где?

спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...