【发布时间】:2017-01-17 13:38:09
【问题描述】:
我有两个返回相同结果的 MySQL 查询。 我想知道哪一个是最好的或优化的解决方案? 我知道 MySQL 分析,我只关心 有 替代方案吗?
SELECT *
FROM users
WHERE id IN (
SELECT user_id
FROM users_courses
GROUP BY user_id
HAVING COUNT(*) >= 2
)
或
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
谢谢
【问题讨论】:
-
越快越好。我这样回答的原因(完全无法使用)是因为您没有提供足够的信息。您想问如何对查询进行基准测试吗?使用子查询或
JOIN实际上是一回事(MySQL 的引擎将以完全相同的方式解释和执行两者)。由于having子句,这两个查询都将同样缓慢。
标签: mysql benchmarking