如何写才是最好SQL

onlie 2007-04-12 11:32:47
如有两个表:
Student(学生信息表) 结构如下:
StudentId, Name, ClassId
/* 学生Id, 姓名, 班级Id */

FeeRecord(交费记录表) 结构如下
FeeRecordId, Title, Price, StudentId
/* 交费记录Id, 费用名称, 金额, 学生Id */

现在要做查询ClassId为99的所有学生交费记录,我写了两种方法
1.
SELECT *
FROM Student INNER JOIN FeeRecord
ON Student.StudentId = FeeRecord.StudentId AND Student.StudentId = 99

2.
SELECT *
FROM (SELECT * FROM Student WHERE ClassId = 99) AS Student
INNER JOIN FeeRecord ON Student.StudentId = FeeRecord.StudentId
以上两种方法,哪种执行效率更好,在我的实际工作中最多有五张表的连接,请朋友给个意见谢谢!!!


...全文
265 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyjsmeng 2007-04-21
  • 打赏
  • 举报
回复
看一下执行计划,然后进行设置索引来优化sql,例如在strudentid,classid上面就行
wangdehao 2007-04-12
  • 打赏
  • 举报
回复
看一下执行计划,也可能2个是一样的
wangdehao 2007-04-12
  • 打赏
  • 举报
回复
1.
lyh2919 2007-04-12
  • 打赏
  • 举报
回复
支持这种写法!!!!!
select *
from FeeRecord
where StudentId in (select StudentId from Student where ClassId = 99)
hxd001_810 2007-04-12
  • 打赏
  • 举报
回复
select *
from FeeRecord
where StudentId in (select StudentId from Student where ClassId = 99)
ydage 2007-04-12
  • 打赏
  • 举报
回复
执行计划中,两者一样

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧