【发布时间】:2012-05-27 21:32:54
【问题描述】:
哪个查询执行得更快,哪个是完美查询?
SELECT
COUNT(*) AS count
FROM
students
WHERE
status = 1
AND
classes_id IN(
SELECT
id
FROM
classes
WHERE
departments_id = 1
);
或者
SELECT
COUNT(*) AS count
FROM
students s
LEFT JOIN
classes c
ON
c.id = s.classes_id
WHERE
status = 1
AND
c.departments_id = 1
我已经放置了两个查询都将输出相同的结果。现在我想知道哪种方法执行得更快,哪种方法是正确的?
【问题讨论】:
-
您测试时哪个更快?
-
使用
EXPLAIN运行两者并亲自查看。示例:explain select count(*) ... -
解释一下你会得到答案
-
@eggyal:有趣,但主题不同。
-
你的表结构很奇怪。为什么学生有“classes_id”?您将如何代表一名学生参加多个课程?