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

Optimisation MySQL basée sur expliquer

essayez la jointure interne au lieu de la sous-requête, c'est la valeur par défaut pour guider la requête sans s'exécuter sur les données, mais peut-être que suivre la requête vous aidera.

SELECT User .id , User .username , User .password , User .role , User .created , User .modified , User .email , User .other_user_id , User .first_name , User .last_name , User .place_id , Resume .id , Resume .user_id , Resume .other_resume_id , Resume .other_user_id , Resume .file_extension , Resume .created , Resume .modified , Resume .is_deleted , Resume .has_file , Resume .is_stamped , Resume .is_active

DEstreetofwalls .users AS User
JOINTURE GAUCHE my_database .attempts AS Attempt ON (Attempt .user_id =User .id ET Attempt .test_id !=5)LEFT JOIN my_database .reports AS Resume ON (Resume .user_id =User .id )

, my_database .users AS Utilisateur1

LEFT JOIN my_database .tags_users AS TagUser sur (User1 .id =TagUser .user_id )

LEFT JOIN my_database .tags Balise AS activée (TagUser .tag_id =Tag .id )

WHEREUser .id =User1 .id ET Attempt .test_id =8ET Attempt .score> 60
ET Resume .has_file =1ET Tag .id ='8' ET Tag .id !='3'GROUPER PAR User .id ORDER BY Attempt .score DESC ;