Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment améliorer l'ordre par les performances avec les jointures dans mysql

Essayez de vous débarrasser du distinct . C'est un tueur de performance. Je ne sais pas pourquoi votre première requête fonctionne rapidement ; MySQL est peut-être assez intelligent pour l'optimiser.

J'essaierais :

SELECT tt.id
FROM tracked_twitter tt
WHERE EXISTS (SELECT 1
              FROM twitter_content tc INNER JOIN  
                   tracker_twitter_content ttc
                   ON  tc.id =  ttc.twitter_content_id
              WHERE  ttc.tracker_id =  88 AND
                     tt.id =  tc.tracked_twitter_id
             )
ORDER BY tt.followers_count DESC ;

Pour cette version, vous voulez des index sur :tracked_twitter(followers_count, id) , twitter_content(tracked_twitter_id, id) , et tracker_twitter_content(twitter_content_id, tracker_id) .