2017-01-17 3 views
0

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

+0

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

+0

Mögliches Duplikat von [Leistung von Abfragen in MySQL testen] (http://stackoverflow.com/questions/2756100/testing-performance-of-queries-in-mysql) – jfneis

Antwort

1

Ich war auf der Suche über MySQL Benchmarking, da es Zweifel an meiner eigenen war auch, und fand eine andere sehr interessante Antwort, die Ihnen auch helfen können komplexere Abfragen:

Testing performance of queries in mysql

es Hoffnung hilft!