作者wind681201 (阿风~~)
看板Database
标题[SQL ] 请问这样的语法能再改成有效率的吗?
时间Sun Sep 29 00:18:48 2013
各位大大好:因为我用linked server的方式将二个资料库连结,
这样语法就能结何成一起用,并且我用了检示表的方式来作,结果
发生了二台不同的机器,效能差很多,a机器2秒,b机器要1分钟
不过想先请教各位,我的语法能再调整吗?
vc <---检示表名
Select a.学期, a.学号, a.课程代码, a.课程班级, b.老师编号, b.老师姓名
From 学生选修表 as a
Inner Join 教师教授表 as b on
a.课程代码 = b.课程代码 And
a.课程班级 = b.课程班级 And
a.学期 = b.学期
Inner Join 课程名称表 as c on
a.课程代码 = c.课程代码
Where (a.课程代码 like '%900%') and (c.课程名称 like '%国语文%')
//////以下有结合上面的检示表
vt <----检示表名
SELECT sd.学号 AS std_no, sd.学期 AS smtr, sd.老师编号, sb.学生姓名,
(SELECT CASE WHEN SUM(sm.修课时数) IS NULL THEN 0 ELSE SUM(sm.修课时数
) END AS Expr1
FROM 修课记录 AS sm
WHERE (学号 = sd.学号) AND (学期 = sd.学期) AND (导师认可 = 1) AND (主
任认可 = 1)) AS hr,
(SELECT cOUNT(学号) AS Expr1
FROM 修课记录 AS sm
WHERE (学号 = sd.学号) AND (学期 = sd.学期) AND
(导师认可 = 1) AND (主任认可 = 1)) AS stdcount
FROM VC AS sd
LEFT OUTER JOIN 学生资料表 AS sb ON sd.学号 = sb.学号
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.121.234
1F:→ alan3100:a机器是啥 b机器是啥 如果是2台client的话你找错重点了 09/29 10:02
2F:→ wind681201:你误会我的意思,我也想看看我这语法能不能有改进的地 09/29 12:41
3F:→ jengting:要了解T-SQL语法撰写的perfomance问题,请先了解SARG 09/30 08:15
4F:→ jengting:第一段语法的问题是使用 LIKE 09/30 08:15
5F:→ jengting:第二段语法的问题在於子查询 09/30 08:15
6F:→ jengting:另外你提供的语法,看不出哪里使用 Link Server ^^?? 09/30 08:16
7F:→ rockchangnew:千万别用linked server来join,请先用openquery来做 09/30 20:21
8F:→ danny8376:元PO是说相同资料库结构的机器跑同样这个Query 10/01 03:23
9F:→ danny8376:结果跑出来速度差异很大 没说到linked server啊XDD 10/01 03:24
10F:→ danny8376:恩... 好像有理解错误OTZ 10/01 03:26
11F:→ danny8376:不过感觉那2s 1min的描述确实是我想的那样OAO!? 10/01 03:27
12F:→ wind681201:因为linked後可以直接使用,所以我就没特别加了 10/01 22:44
13F:→ wind681201:请问您想的是怎样呢? 10/01 22:44