Ich habe zwei MySQL-Abfragen, die das gleiche Ergebnis zurückgeben. Ich würde gerne wissen, welche ist die beste oder die optimierte Lösung? Ich bin mir bewusst, MySQL Profiling, ich interessiere nur über Alternativen?Benchmark-SQL-Abfrage
SELECT *
FROM users
WHERE id IN (
SELECT user_id
FROM users_courses
GROUP BY user_id
HAVING COUNT(*) >= 2
)
ODER
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
Danke
Derjenige, der schneller ist, ist besser. Der Grund, warum ich so antwortete (völlig unbrauchbar), ist, dass Sie keine ausreichenden Informationen zur Verfügung gestellt haben. Würdest du fragen wollen * wie * die Anfragen zu benchmarken? Die Verwendung einer Unterabfrage oder eines 'JOIN's ist im Grunde ein und dasselbe (die Engine von MySQL wird beide genau so interpretieren und ausführen). Beide Abfragen werden aufgrund der "have" -Klausel gleichermaßen langsam sein. – Mjh
Mögliches Duplikat von [Leistung von Abfragen in MySQL testen] (http://stackoverflow.com/questions/2756100/testing-performance-of-queries-in-mysql) – jfneis