哪位大神能帮看一下以下两个sql的执行效率如何?

小扈 发布于 2013/01/17 17:54
阅读 295
收藏 0
我这里有两个sql语句,他们全都完成同一个问题(
求出小于45岁的各个老师所带的大于12岁的学生人数
数据库中有3个表teacher 表,student表,tea_stu关系表。
teacher 表teaID name age
student 表stuID name age
teacher_student表teaID stuID
),先看代码:
1)
SELECT
teacher.teaid,
teacher. NAME,
total
FROM
teacher,
(
SELECT
tea_stu.teaid,
count(*) total
FROM
student,
tea_stu
WHERE
student.stuid = tea_stu.stuid
AND student.age > 12
GROUP BY
tea_stu.teaid
) AS tea_stu2
WHERE
teacher.teaid = tea_stu2.teaid
AND teacher.age < 45;

2)
SELECT
t.teaId,
t. NAME,
t.age,
COUNT(t.teaId)
FROM
teacher t,
student s,
tea_stu ts
WHERE
t.teaId = ts.teaId
AND s.stuId = ts.stuId
AND t.age < 45
AND s.age > 12
GROUP BY
t.teaId;

建表语句为:
drop table if exists tea_stu;
drop table if exists teacher;
drop table if exists student;
create table teacher(teaID int primary key,name varchar(50),age int);
create table student(stuID int primary key,name varchar(50),age int);
create table tea_stu(teaID int references teacher(teaID),stuID int references student(stuID));


问题来了: 哪位大神能帮我讲解一下,为什么第一个查询语句的执行效率比第二个高呢?
加载中
0
Y-QTCe
Y-QTCe
第一个查询语句在关联的时候,数据量比较小。
小扈
小扈
还是不太懂,能说明白点吗
0
lvwenwen
lvwenwen
数据量比较小。
返回顶部
顶部