2017-01-17 1 views
0

J'ai deux requêtes MySQL qui retournent le même résultat. Je voudrais savoir laquelle est la meilleure ou la solution optimisée? Je suis au courant de profilage MySQL, je ne concerne que Avoir alternatives?Bench-marking SQL Query

SELECT * 
FROM users 
WHERE id IN (
    SELECT user_id 
    FROM users_courses 
    GROUP BY user_id 
    HAVING COUNT(*) >= 2 
) 

OU

SELECT coding_test.users.name 
FROM coding_test.users_courses 
INNER JOIN coding_test.users ON coding_test.users.id = coding_test.users_courses.user_id 
GROUP BY coding_test.users.name 
HAVING COUNT(coding_test.users_courses.course_id) >= 2 

Merci

+0

Celui qui est le plus rapide est meilleur. La raison pour laquelle j'ai répondu comme ça (complètement inutilisable) est que vous n'avez pas fourni suffisamment d'informations. Vouliez-vous demander * comment * référencer les requêtes? Utiliser une sous-requête ou un 'JOIN 'est effectivement une seule et même chose (le moteur de MySQL va interpréter et exécuter les deux exactement de la même manière). Les deux requêtes seront également lent en raison de la clause 'having'. – Mjh

+0

Copie possible de [Test des performances des requêtes dans mysql] (http://stackoverflow.com/questions/2756100/testing-performance-of-queries-in-mysql) – jfneis

Répondre

1

je cherchais sur l'analyse comparative MySQL, car il avait un doute de moi-même aussi, et a trouvé une autre réponse très intéressante qui peut vous aider même requêtes plus complexes:

Testing performance of queries in mysql

espère que ce aide!