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